0

创建新应用时,两个视图分别是 main.html 和 index.html。main 从未显式呈现,它被扩展为

#{extends 'main.html' /}

当变量仅从另一个视图 (index.html) 扩展时,如何将变量传递给视图 (main.html)?

4

2 回答 2

3

如果它被传递给 render 方法,它将正常可用。整个视图(包括扩展和包含)由 Groovy 模板引擎呈现。

但是,在main.html通常在每个视图上扩展的情况下,最好的选择是始终renderArgs使用注释将其添加到地图中@Before,如下所示。这确保它始终可用,并且您不会重复自己 (DRY)。

@Before
private void setup() {
    renderArgs.put("somekey", "somevalue");
}

这样,您无需在每次渲染调用时将 somekey 传递给渲染方法。

然后,在您的 中main.html,您可以somekey简单地使用 的标准方法进行访问$somekey

于 2012-06-04T12:29:40.107 回答
1

Codemwnci 给出了如何从控制器内部将变量传递给布局模板的解决方案。以下是如何将变量从普通视图传递到布局视图:

在您的 index.html 中,您可以执行以下操作:

#{set title:'My title'/}

在您的 main.html 中,您可以“获取”在 index.html 中设置的变量:

<h1>#{get 'title'/}</h1>

如果您使用的是RythmJapidextends模板引擎,那么您可以在语句中直接将变量传递给 main.html

在 Rythm 模板引擎中,假设您的 main.html 是:

@args String title
...
<h1>@title</h1>
...

您可以使用以下语句扩展 index.html 中的主模板:

@extends(main, "my title")
于 2012-06-04T12:31:01.507 回答