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.

オブジェクトが null ではありません。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 に答える