有没有什么好的理由在JSP标记中使用<rtexprvalue> false </rtexprvalue>?

时间:2010-03-29 09:08:22

标签: java jsp jsp-tags

是否有任何理由拒绝将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}" />

2 个答案:

答案 0 :(得分:14)

我认为它主要是一种向后兼容性测量,就像完全关闭给定JSP的EL一样。

也许标签库在EL之前就已存在,并且为了自己的目的使用特殊语法$ {}。也许属性值经常采用包含文字$ {}的值。

如果没有这样的设置,需要修改现有代码(在标记库或JSP中),以便在升级到最新版本的Servlet规范后仍然可以工作。

答案 1 :(得分:3)

可能有一些属性(例如id引用标记本身),它不适合在运行时设置。您可能想出一个场景,您真的希望${}表示纯文本,或者在某种自定义上下文中手动评估任何EL内容。

但我认为切换的真正原因是向后兼容性。自定义标签早于JSP对EL的内置支持;更改taglib下的定义以使${}现在具有特殊含义可能会破坏现有模板对该标记的使用。对于back-compat更安静,默认为rtexprvalue-false,让JSP 2.0的新taglib指定他们想要新的行为。

[肯定的。 Thilo说的话。 : - )]