Playframework 如何将变量传递给已扩展且未显式调用的视图?

Playframework 如何将变量传递给已扩展且未显式调用的视图?,playframework,Playframework,创建新应用程序时,有两个视图是main.html和index.html。main从不显式呈现,而是扩展为 {扩展'main.html'/} 当变量仅从另一个视图(index.html)扩展时,如何将其传递给视图(main.html)?如果将其传递给render方法,则该变量将按正常方式可用。整个视图(包括extends和include)由Groovy模板引擎呈现 但是,对于通常在每个视图上扩展的main.html,最好的选择是始终使用@Before注释将其添加到renderArgs地图中,如下所

创建新应用程序时,有两个视图是main.html和index.html。main从不显式呈现,而是扩展为

{扩展'main.html'/}


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

如果将其传递给render方法,则该变量将按正常方式可用。整个视图(包括extends和include)由Groovy模板引擎呈现

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

这样,您就不需要在每次渲染调用时将somekey传递给render方法


然后,在
main.html
中,您可以使用
$somekey
的标准方法访问
somekey
,如果它被传递到渲染方法,它将按正常方式可用。整个视图(包括extends和include)由Groovy模板引擎呈现

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

这样,您就不需要在每次渲染调用时将somekey传递给render方法


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

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

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

#{set title:'My title'/}
在main.html中,您可以“获取”index.html中设置的变量:

<h1>#{get 'title'/}</h1>
使用以下语句扩展index.html中的主模板:

@extends(main, "my title")

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

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

#{set title:'My title'/}
在main.html中,您可以“获取”index.html中设置的变量:

<h1>#{get 'title'/}</h1>
使用以下语句扩展index.html中的主模板:

@extends(main, "my title")