2010-03-29 17 views
12

是否有任何理由拒絕將scriptlet或EL表達式作爲屬性值插入?在JSP標籤中有沒有很好的理由使用<rtexprvalue> false</ rtexprvalue>?

比方說,我們有標籤:

<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> 

可能是什麼dissallowing下面的一個很好的理由?

<my:mytag attr="${setting}" /> 

回答

14

我會說它主要是一個向後兼容的措施,就像完全關閉給定JSP的EL的能力一樣。

也許標籤庫在EL之前存在,並且爲了自己的目的使用特殊語法$ {}。也許屬性值經常採用包含文字$ {}的值。

如果沒有這樣的設置,需要修改現有代碼(在標記庫或JSP中)以便在升級到最新版本的Servlet規範後繼續工作。

+0

完美答案:)。謝謝 – 2010-03-29 10:04:36

3

可能有潛在的屬性(例如,id來引用標籤本身),它不適合在運行時設置。你可能想出一個場景,你真的想${}意味着純文本,或任何EL內容在某種自定義上下文中手動評估。

但我認爲切換的真正原因是向後兼容。自定義標籤早於JSP對EL的內置支持;更改taglib下的定義以便${}現在具有特殊含義可能會破壞現有模板對該標記的使用。爲back-compat更安全地默認爲rtexprvalue-false,並讓JSP 2.0的新taglibs指定他們需要新行爲。

[是的。蒂洛說了什麼。 :-)]

相關問題