2010-02-02 57 views
1

我正在通過擴展SimpleTagSupport來創建自定義JSP標記。通常情況下,我可以使用jstl從<c:out value="${key.attr}" />這樣的模型中獲取數據。我的問題是:在創建自定義標籤時(通過使用SimpleTagSupport),如何獲得對模型中數據的訪問權限?謝謝。自定義標記 - 訪問模型中的數據?

爲了澄清,我需要一個自定義標籤來對模型中的一段數據進行一些格式化。如果自定義標籤不是最好的方法(但仍然會回答我的原始問題),我很樂於提供建議。

更新:基於Bozhos的答案,它似乎可以通過使用JSP上下文從模型中獲取數據。這是它通常的典型做法嗎(即,在顯示之前使用自定義標籤來操縱模型中的數據)?還是可以將數據作爲參數傳遞給自定義標記邏輯(即通過標記屬性)?我只是想弄清楚每種方法的優缺點。謝謝。

回答

1

JSTL處理的所有數據都存儲在jsp上下文屬性中。所以,你可以得到的,例如,key變量,通過調用:

getJspContext().getAttribute("key"); 

有四個作用域爲這些屬性 - 頁面,請求,會話和應用程序,在那裏它們被設定,所以要小心。有一個重載的方法來提供一個特定的範圍。

當然,您也可以定義一個標籤屬性,並以此方式傳遞它。

+0

所以這是一個比通過參數傳遞數據到自定義標籤更好的方法嗎? – oym 2010-02-02 13:13:25

+0

現在,這是一個不同的故事。當然,您可以將它作爲參數傳遞。但是您也可以從頁面上下文中訪問其他值。 – Bozho 2010-02-02 18:00:24