我试图将一个gsp包含到另一个gsp中,但要避免在布局中呈现两次的导航栏。下面是我试图尽可能简短地展示这一点。
main.gsp
...
<g:render template="dashboardNavbar"></g:render>
...
page1.gsp
...
<meta name="layout" content="main"/>
...
page2.gsp
...
<meta name="layout" content="main"/>
<g:include action="page1"></g:include>
...
Page2必须独立存在,因此删除meta标签是不可能的。我尝试添加带有标志的g:if块来控制main.gsp中navbar模板的呈现,并将该标志作为模型传递给include指令,但这会导致两个navbar都消失。不知道为什么会这样。有什么建议么?
最佳答案
为什么不从page1.gsp中提取元节并将整个内容另存为单独的模板,该模板将呈现为page1或page2:
page1.gsp
...
<meta section for page1/>
<g:render template="contentDuplicatedInGsp1AndGsp2"></g:render>
...
page2.gsp
...
<meta section for page2/>
<g:render template="contentDuplicatedInGsp1AndGsp2"></g:render>
...
当然,请记住在呈现page2.gsp之前在 Controller 中设置适当的变量
关于grails - grails布局嵌套页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510080/