【发布时间】:2015-06-17 15:18:13
【问题描述】:
我正在尝试实现一个标签,如果没有作为参数传递,则该标签必须呈现默认正文。这是我的第一次尝试:
def myDiv = { attrs, body ->
out << '<div class="fancy">'
if (body) //this approach doesn't work cause body is a closure that is never null
out << body()
else
out << 'default content'
out << '</div>'
}
那么我们将有 2 个简单的使用场景。
1) <g:myDiv/> 内容主体不存在,应呈现:
<div class="fancy">
default content
</div>
2) <g:myDiv> SPECIFIC content </g:myDiv> 内容体存在,应该呈现:
<div class="fancy">
SPECIFIC content
</div>
在这种情况下最好的方法是什么?
【问题讨论】:
-
执行 body() 并将输出分配给一个变量,看看输出是空还是 null 呈现默认正文?
-
是的。我测试了您的解决方案,它似乎有效。这不是我能想到的最干净的,我担心它隐藏了一些陷阱。还是谢谢。
-
我怀疑你还有其他选择
标签: grails