Tags 检查播放标签是否有正文
从中,可以将主体传递给标记,如下所示:Tags 检查播放标签是否有正文,tags,playframework,conditional,Tags,Playframework,Conditional,从中,可以将主体传递给标记,如下所示: #{hello}Bob#{/hello} %{ body = _body == null ? null : play.templates.JavaExtensions.toString(_body).trim(); }% #{if body} #{doBody /} #{/if} #{else} ... #{/else} 车身可通过doBody使用: Hello #{doBody /}! 但你如何测试是否提供了尸体 我想在标签中做如下
#{hello}Bob#{/hello}
%{
body = _body == null ? null : play.templates.JavaExtensions.toString(_body).trim();
}%
#{if body}
#{doBody /}
#{/if}
#{else}
...
#{/else}
车身可通过doBody
使用:
Hello #{doBody /}!
但你如何测试是否提供了尸体
我想在标签中做如下操作:
#{if hasBody()}
#{doBody /}
#{/if}
#{else}
&{'pages.' + _arg + '.name'}
#{/else}
有什么想法吗?如果你想让你的标签保持html/标签格式,那么你可以使用这种语法
#{if (s = play.templates.JavaExtensions.toString(_body).trim()) != ''}
it has a body! ${s}
#{/if}
#{else}
no body!!!!
#{/else}
你的另一个选择是使用fastTags(参见这里的博客文章)。在那里你基本上可以做同样的事情
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
}
}
publicstaticvoid\u myTag(映射参数、闭包体、PrintWriter输出、ExecutableTemplate模板、int fromLine){
字符串s=JavaExtensions.toString(body);
如果(s.trim()!=“”){
//有一具尸体
}否则{
//没有尸体
}
}
它似乎不喜欢\u body
在if
标签中;它会导致空指针错误。我将其移动到groovy块中,因此现在我的模板如下所示:
#{hello}Bob#{/hello}
%{
body = _body == null ? null : play.templates.JavaExtensions.toString(_body).trim();
}%
#{if body}
#{doBody /}
#{/if}
#{else}
...
#{/else}
让我走上了正确的轨道,但我不得不重新安排一些事情——详细信息请参见我的答案。非常奇怪,我测试了它并正在工作。。。重要的是你已经把它整理好了