java - play - 将全局变量添加到自定义标签

标签 java playframework playframework-1.x

我有一个代表 HTML 的字符串(通过服务器端请求动态获取)。在此 HTML 中,有一个自定义 Play 标签。例如:

<html><body><div>#{myTag /}</div></body></html>

现在,我想将变量传递给此标记:

Template playTemplate = TemplateLoader.loadString(myHtml); // the HTML above
playTemplate.compile();

SomeObject myObject = SomeObject.find("name", "test").first();
Map<String,Object> args = new HashMap<String, Object>();
args.put("myObject", myObject);
String result = playTemplate.render(args);

在我的自定义“myTag.tag”中,代码​​如下所示:

<p>
    Hello world: ${myObject.name}
</p>

但是我收到一个错误:

Exception raised was NullPointerException : Cannot get property 'name' on null object.

该对象不为空。当我在 HTML 字符串中将 #{myTag/} 替换为 ${myObject.name} 时,一切正常!如何将对象传递给自定义标记?

最佳答案

您的模板应该是

<html><body><div>#{myTag obj: myObject/}</div></body></html>

你的标签应该是

<p>Hello world: ${_obj.name}</p>

本质上,您需要显式地将渲染参数从模板传递到标签。

Rythm template engine但是支持隐式传递渲染参数到标记。它带来了 groovy 模板中没有的许多其他功能。查看完整演示:http://rythmengine.com

关于java - play - 将全局变量添加到自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266918/

相关文章:

java - bash 脚本问题启动程序

mysql - 在 Play Framework/JPA/hibernate 中截断表?

java - Play 框架中的 Cron Job

github - 如何获取 Play v1.2.5 以安装存储为 github 发布二进制文件的依赖项

java - 具有定向光正交投影的 OpenGL 3+

java - 在java中测试DB2顺序

Java 3D 文档

java - Play 2 : Difference between appDependencies and libraryDependencies?

javascript - 单页 Play 应用

ssl - 如何在 play 2.0 应用程序中设置 ssl?