2012-01-09 43 views
39

我正在處理自定義標記庫,我很困惑如何在TLD文件中使用<required><rtexprvalue>標記來定義自定義標記屬性。<required>和<rtexprvalue>用於什麼?

  1. 這些標籤是什麼?
  2. 我們應該在他們之間寫什麼?
  3. 寫這些標籤後我們會得到什麼樣的行爲?
+0

https://docs.oracle.com/javaee/5/tutorial/doc/bnama.html#bnamh – user2418306 2016-04-10 14:51:04

回答

62

required很簡單地意味着它的含義。該屬性是必需的或強制的。

rtexprvalue表示運行時表達式值。這意味着該屬性可以支持scriptlet值。

elexprvalue表示它可以支持EL(表達式語言)值。

所以,如果你有同時定義爲required=truertexprvalue=trueelattributerequiredattr定義爲elexprvalue=true,你可以寫如下:

<myprefix:mytag requiredattr="<%=baz.getId()%>" elattribute="${foo.bar}"/> 
+0

謝謝,我會再次參考代碼並嘗試一下! 你能告訴我如果我讓rtexprvalue錯誤會發生什麼? 我應該在標籤之間輸入什麼標籤庫文件? – bali208 2012-01-09 11:31:50

+0

當您不希望taglib的用戶提供運行時值時,通常會將「rtexprvalue」和「elexprvalue」設置爲false。我在某些標籤庫中看到'id'屬性被聲明爲'false'。 – adarshr 2012-01-09 12:35:43

6

在TLD中定義的<rtexprvalue>元素捕獲屬性的動態行爲。 值可以是真或假。動態列中的假值意味着 只能爲屬性指定靜態字符串值。一個真正的值意味着可以指定一個 請求時間屬性值。如JSP規範中所定義的, 「請求時間屬性值」可以是Java表達式,EL表達式或<jsp:attribute>設置的值。

<required>元素定義嵌套屬性是必需的還是可選的。如果不存在,那麼缺省值是「false」,即屬性是可選的。