确保自定义标签没有子标签
Making sure custom tag does not have subtags
我正在构建自定义标签来环绕字形。
<b:icon binding="i" />
部分 Glyphicon 规范包括:
仅适用于空元素
Icon classes should only be used on elements that contain no text
content and have no child elements.
我想确保没有人做类似
的事情
<b:icon binding="i">
<cfset myVariable++>
</b:icon>
有没有办法确保自定义标签没有任何内部标签?
我可以看到你有两个选择。
首先,如果 thisTag.executionMode
不是 "start"
,则抛出异常。或者如果 thisTag.hasEndTag
是 true
,同样可以抛出异常。但是,这会将标签使用限制为:
<b:icon binding="i">
而不是:
<b:icon binding="i" />
因为 />
是 shorthand 的结束标签。这不太理想,您可能不会接受这种方法。
其次你可以检查是否有任何 generatedContent
但这是一个很大的偶然事件,因为在开始和结束标签之间完全有可能有一些东西,但要注意不要生成内容:
<b:icon binding="i"><cfset foo="bar"></b:icon>
(注意:即使有换行和缩进也算作 generatedContent
)。
底线:虽然 JSP 自定义标签允许控制这类事情,但我看不出 CFML 实现如何控制它。最接近的是完全禁止关闭标签。
我正在构建自定义标签来环绕字形。
<b:icon binding="i" />
部分 Glyphicon 规范包括:
仅适用于空元素
Icon classes should only be used on elements that contain no text content and have no child elements.
我想确保没有人做类似
的事情 <b:icon binding="i">
<cfset myVariable++>
</b:icon>
有没有办法确保自定义标签没有任何内部标签?
我可以看到你有两个选择。
首先,如果 thisTag.executionMode
不是 "start"
,则抛出异常。或者如果 thisTag.hasEndTag
是 true
,同样可以抛出异常。但是,这会将标签使用限制为:
<b:icon binding="i">
而不是:
<b:icon binding="i" />
因为 />
是 shorthand 的结束标签。这不太理想,您可能不会接受这种方法。
其次你可以检查是否有任何 generatedContent
但这是一个很大的偶然事件,因为在开始和结束标签之间完全有可能有一些东西,但要注意不要生成内容:
<b:icon binding="i"><cfset foo="bar"></b:icon>
(注意:即使有换行和缩进也算作 generatedContent
)。
底线:虽然 JSP 自定义标签允许控制这类事情,但我看不出 CFML 实现如何控制它。最接近的是完全禁止关闭标签。