从docs,您可以将正文传递给这样的标记:
#{hello}Bob#{/hello}
可以通过doBody
使用正文:
Hello #{doBody /}!
但你如何测试是否提供了身体?
我想在标签中做这样的事情:
#{if hasBody()}
#{doBody /}
#{/if}
#{else}
&{'pages.' + _arg + '.name'}
#{/else}
有什么想法吗?
答案 0 :(得分:3)
如果您希望将标记保留为html / tag格式,则可以使用此语法
#{if (s = play.templates.JavaExtensions.toString(_body).trim()) != ''}
it has a body! ${s}
#{/if}
#{else}
no body!!!!
#{/else}
您的另一个选择是使用fastTags(请参阅此处的this博文)。在那里你基本上可以做同样的事情
public static void _myTag(Map<?, ?> args, Closure body, PrintWriter out, ExecutableTemplate template, int fromLine) {
String s = JavaExtensions.toString(body);
if (s.trim() != "" ) {
//there is a body
} else {
// there is no body
}
}
答案 1 :(得分:0)
它似乎不喜欢_body
标记内的if
;它会导致空指针错误。我通过将它移动到一个groovy块中来解决,所以现在我的模板看起来像这样:
%{
body = _body == null ? null : play.templates.JavaExtensions.toString(_body).trim();
}%
#{if body}
#{doBody /}
#{/if}
#{else}
...
#{/else}