我正在使用 play 框架 1.2.5 开发一个项目
我有两个自定义标签文件,一个用于“设置”值
#{set foo:'bar' /}
以及另一个“获取”该值来决定是否显示某些标记的文件。
%{ if(foo) { %}
#{doBody /}
%{ } }%
这曾经在以前的游戏版本中工作(不记得是哪个版本),但现在不起作用,我不确定是否是升级本身或其他东西损坏了。
根据模板引擎标签的 Play 文档,设置应该在不同文件之间工作:
定义一个可以在同一模板或任何带有 get 标签的布局中检索的值。 http://www.playframework.com/documentation/1.2.3/tags#set
有什么可能出问题的线索吗?
提前致谢
最佳答案
set
仅适用于将数据传递到扩展模板的子模板,例如
父模板:
<html>
<title>${get 'title'}</titl>
...
</html>
子模板:
$extends('parent.html')
${set title: 'My Title'/}
要将数据从一个模板传递到另一个模板,您必须将被调用者模板定义为标签。有关更多详细信息,请参阅 play 的文档。注意我不确定标签是否可以扩展另一个标签,很可能是不可能的
如果您使用PlayRythm插件,那么就容易多了。例如。从模板 foo
调用 bar
可以像
栏模板:
Hello @who
foo 模板:
@bar("World")
@// or
@bar(who: "world")
@// or
@bar({who: "world"})
注意 Rythm 没有单独的标签概念,实际上每个模板都是标签,您可以从另一个模板调用任何模板,甚至可以进行递归调用。您可以在 http://fiddle.rythmengine.org/ 上尝试 rythm 的现场互动演示.
免责声明:我是 Rythm 模板引擎和 Play-Rythm 模块的创建者和维护者
关于java - Play 框架 'set' 模板标记在文件之间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391296/