我正在构建自定义标记以包裹glyphicons。
<b:icon binding="i" />
Glyphicon规范的一部分包括:
仅用于空元素
图标类只应用于不包含文本的元素 内容并没有子元素。
我想确保没有人做像
这样的事情 <b:icon binding="i">
<cfset myVariable++>
</b:icon>
有没有办法确保自定义标记没有任何内部标记?
答案 0 :(得分:3)
嗯,你有两种我可以看到的选择。
首先,如果thisTag.executionMode
不是"start"
,则抛出异常。或者,如果thisTag.hasEndTag
为true
,则同样可以抛出异常。但是,这会将标记使用限制为:
<b:icon binding="i">
不:
<b:icon binding="i" />
因为/>
是结束标记的简写。这不太理想,你也许不会接受这种方法。
其次你可以检查是否有generatedContent
,但这是一个很大的杂乱无章,因为完全有可能在开始和结束标签之间有一些东西,但是小心不要生成内容:
<b:icon binding="i"><cfset foo="bar"></b:icon>
(注意:如果有的话,即使是新的行和缩进也算作generatedContent
。
底线:虽然JSP自定义标签允许控制此类事物,但我无法看到CFML实现如何控制它。最接近的是禁止完全关闭标签。