java - Play 框架 'set' 模板标记在文件之间不起作用

标签 java playframework template-engine playframework-1.x

我正在使用 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/

相关文章:

java - Web 应用程序中的内容搜索

scala - 尝试了解使用哪个 Play 库

scala - 发送 FakeRequest 时如何为 akka.stream.Materializer 提供隐式值?

java - Vert.X SLF4J 日志记录

java - Maven mvn --dos 上的版本显示一些特殊的东西

java - 可以阻止 JIT 优化方法吗?

javascript - 如何使用模板引擎在nodejs中将文本作为电子邮件发送

junit - "play test"类路径不同于 "sbt test"类路径

javascript - Jinja2 的 JS 替代方案,可在带有 AngularJS 的静态服务器上工作

xml - 扩展 XHTML DTD 以在 ID 属性中使用特殊字符