如何在Grails模板body()中分配GSP变量?

| 在我的Grails 1.3.7应用程序中,我想使用模板从视图中剔除周围的HTML。但是,GSP变量分配不适用于所包含的body()。如何执行以下操作? _aTemplate.gsp:
<div class=\"example\">
    <% out <<  body() %>
</div>
aView.gsp:
<html>
<head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
    <meta name=\"layout\" content=\"main\" />
</head>
<body>
    <g:set var=\"foo\" value=\"${42}\"/>
    <% assert foo == 42 : foo %>

    <tmpl:/aTemplate>
        <g:set var=\"bar\" value=\"${6}\"/>
        <% assert bar == 6 : bar %>
    </tmpl:/aTemplate>
</body>
</html> 
bar
的分配不起作用:当我得到http:// localhost:8080 / myApp / aView.gsp时,
bar
断言失败
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException:
 Error executing tag<g:render>: Assertion failed:
(bar == 6). Values: bar = null
 at /Users/jbeutel/proj/grailsSandboxes/myApp/grails-app/views/aView.gsp:13 
如何使模板body()正常工作? 另外,还有其他方法可以使周围的HTML保持平衡吗?我的用例不在最高层,因此我没有尝试使用布局。如果我使用TagLib闭包而不是模板文件,则变量分配有效,但是我不想在闭包中放入大量HTML,因此无论如何我都需要将不平衡的HTML放入模板文件(即,单独的模板)身体前后)。有没有更好的办法?     
已邀请:
        您可以将.gsp中的变量传递到共享模板中,然后可以考虑如下。如果它们位于login.gsp页面上,我这样做是在我的公共标题中隐藏一个\'login \'链接
<g:render template=\"/layouts/header\" model=\"[\'hidelogin\':true]\"/>
然后在_header.gsp中
<g:if test=\"${!hidelogin}\">
    //show your login link
</g:if>
    

要回复问题请先登录注册