0

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

<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}如何将对象传递给自定义标签?

4

1 回答 1

1

你的模板应该是

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

你的标签应该是

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

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

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

于 2012-09-04T19:36:37.433 回答