【问题标题】:GSP Template fails to retrieve passed template from another templateGSP 模板无法从另一个模板检索传递的模板
【发布时间】:2015-05-08 12:08:36
【问题描述】:

我正在开发一个 Grails 2.4.4 项目。我的gsp 页面上有以下代码(不是模板),它调用了调用另一个模板的子模板:main gsp page > gsp template > yet another gsp template:

ma​​in.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 渲染?谢谢大家。

【问题讨论】:

  • 如果你通过model="[param_two: param_two]"会发生什么?
  • 它告诉我有unescaped 个字符。

标签: html grails gsp


【解决方案1】:

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

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

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

【讨论】:

  • ${param_two} 不起作用,所以我尝试使用${params.param_two},然后它现在可以工作了。如果它也有效,我会尝试你的解决方案。
  • 当然你必须先处理你的那个错字:-)。我建议的工作我刚刚尝试过。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2012-07-05
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多