GSP 模板无法从另一个模板检索传递的模板

GSP Template fails to retrieve passed template from another template

我正在处理 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}']" />
...

_段-one.gsp

<p>Segment One: ${param_two}</p>

现在渲染整个页面时,它只显示如下内容:

On details: param_one
Segment One: ${param_two}

为什么 _segment-one.gsp 无法呈现传递的 param_two?是否不允许从另一个 template 渲染中获得 template?谢谢大家。

我通过添加 params 关键字修复了 _segment-one.gsp 中的代码:

<p>Segment One: ${params.param_two}</p>
                  ^^^^^^

首先,您可以让 gsp 页面调用无限期调用模板的模板。调用模板时,实际上是在运行时将模板的代码包含到包含页面中;换句话说,模板是调用者的一部分,默认情况下它可以访问调用者可见的所有对象。您所要做的就是将您的第二个收录更改为:

<g:render template="/segments/segment-one" />

现在,模板段 1 已经可以访问 param_one 和 param_two。如果您要传递在您所在的本地模板(或 gsp)中创建的新内容,您只需要再次使用 model 标签。