是否有任何理由拒绝将scriptlet或EL表达式作为属性值插入?
假设我们有标签:
<tag>
<name>mytag</name>
<tag-class>org.apache.beehive.netui.tags.tree.Tree</tag-class>
<attribute>
<name>attr</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<type>boolean</type>
</attribute>
</tag>
什么可能是一个不喜欢下面的理由?
<my:mytag attr="${setting}" />
答案 0 :(得分:14)
我认为它主要是一种向后兼容性测量,就像完全关闭给定JSP的EL一样。
也许标签库在EL之前就已存在,并且为了自己的目的使用特殊语法$ {}。也许属性值经常采用包含文字$ {}的值。
如果没有这样的设置,需要修改现有代码(在标记库或JSP中),以便在升级到最新版本的Servlet规范后仍然可以工作。
答案 1 :(得分:3)
可能有一些属性(例如id
引用标记本身),它不适合在运行时设置。您可能想出一个场景,您真的希望${}
表示纯文本,或者在某种自定义上下文中手动评估任何EL内容。
但我认为切换的真正原因是向后兼容性。自定义标签早于JSP对EL的内置支持;更改taglib下的定义以使${}
现在具有特殊含义可能会破坏现有模板对该标记的使用。对于back-compat更安静,默认为rtexprvalue-false,让JSP 2.0的新taglib指定他们想要新的行为。
[肯定的。 Thilo说的话。 : - )]