Templates Grails布局可以调用模板吗?

Templates Grails布局可以调用模板吗?,templates,grails,layout,Templates,Grails,Layout,我想我的主布局有条件地放入一些html块,我想在一个单独的文件中定义它们 我定义了不止一种导航栏。我想为每个导航栏创建一个文件。然后,我想在控制器或特定gsp文件中设置一个变量,以便布局选择要使用的导航器。是的,您只需要在g:render语句周围设置条件。你可以这样做 <% if (condition) { %> <g:render template="/common/topbar" /> <% } %> 或 您可以通过几种不同的方式来实现这一点。我建

我想我的主布局有条件地放入一些html块,我想在一个单独的文件中定义它们


我定义了不止一种导航栏。我想为每个导航栏创建一个文件。然后,我想在控制器或特定gsp文件中设置一个变量,以便布局选择要使用的导航器。

是的,您只需要在g:render语句周围设置条件。你可以这样做

<% if (condition) { %>
 <g:render template="/common/topbar" />
<% } %>


您可以通过几种不同的方式来实现这一点。我建议的第一种方法是在布局中尝试使用类似的内容:

<g:if test="${nav == 'nav1'}">
     <g:render template="/nav/nav1" />
</g:if>
<g:elseif test="${nav == 'nav2'}">
     <g:render template="/nav/nav2" />
</g:elseif>
<g:else>
     <g:render template="/nav/default" />
</g:else>
或者如果你想再去兔子洞一点,你可以做点什么


如果您仍然遇到问题,那么我可以想象,还有其他一些问题没有得到解决,比如将一些模型参数传递给。您好,Jean,我在布局内部使用渲染时遇到问题。他们在普通普惠制下工作得很好。当它们是布局的一部分时,它们是未执行的。
<g:if test="${nav == 'nav1'}">
     <g:render template="/nav/nav1" />
</g:if>
<g:elseif test="${nav == 'nav2'}">
     <g:render template="/nav/nav2" />
</g:elseif>
<g:else>
     <g:render template="/nav/default" />
</g:else>
<g:render template="/nav/${nav ?: 'default'}" />