Grails布局可以调用模板吗?

And*_*rew 2 grails layout templates

我希望我的主要布局有条件地放入一些我希望在单独的文件中定义的html块.

我定义了多种导航栏.我想为每个导航栏都有一个文件.然后我想在我的控制器或特定的gsp文件中设置一个变量,以便布局选择使用哪个导航器.

Col*_*ton 6

您可以通过几种不同的方式实现此目的.我建议你在布局中尝试这样的第一种方式:

<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>
Run Code Online (Sandbox Code Playgroud)

为了呈现这些模板,您必须具有以下文件:

  • grails-app/views/nav/_nav1.gsp
  • grails-app/views/nav/_nav2.gsp
  • grails-app/views/nav/_default.gsp

请注意,因为模板是"root-relative",所以它从grails-app/views目录的根目录解析了模板.有关详细信息,请参阅视图和模板用户指南部分.

另一种方法是根据这样的参数动态渲染导航(在你的布局中):

<g:render template="/nav/${nav ?: 'default'}" />
Run Code Online (Sandbox Code Playgroud)

或者,如果你想多一点往下走的兔子洞,你可以做一些这样的.

如果你仍然遇到问题,那么我想,还有其他一些错过,比如将一些模型参数传递给渲染标记.