我正在开发Grails 2.4.4项目。我的gsp
页面上有以下代码(不是模板),调用调用另一个模板的子模板:main gsp page > gsp template > yet another gsp template
:
main.gsp
...
<g:render template="/details" model="[param_one:'param_one', param_two:'param_two']" />
...
_details.gsp
...
<p>On details: ${param_one}</p>
<g:render template="/segments/segment-one" model="[param_two:'${param_two}']" />
...
_segment-one.gsp
<p>Segment One: ${param_two}</p>
现在,当它呈现整个页面时,它只显示如下内容:
On details: param_one
Segment One: ${param_two}
为什么_segment-one.gsp
无法呈现传递的param_two
?是否不允许template
来自另一个template
渲染?谢谢你们。
答案 0 :(得分:1)
首先,您可以让gsp页面调用无限期调用模板的模板。当您调用模板时,您实际上是在运行时将模板的代码包含在包含页面中;换句话说,模板是调用者的一部分,默认情况下它可以访问调用者可见的所有对象。您所要做的就是将第二个包含更改为:
<g:render template="/segments/segment-one" />
现在,模板段1可以访问param_one和param_two。如果要传递在您所在的本地模板(或gsp)中创建的新内容,则只需再次使用模型标记。
答案 1 :(得分:0)
我通过添加_segment-one.gsp
关键字修改了params
中的代码:
<p>Segment One: ${params.param_two}</p>
^^^^^^