2011-01-24 115 views
1

在大型Web應用程序上工作時,我使用了JSP的houndsres。 每個JSP包括(僅)一組內部標籤,例如:JSTL/JSP動態表單頁面狀態

<AAA:INPUT value="bbb" state="<%=getPageState()"/> 

此標記被渲染成HTML輸入字段中,與只讀/使能狀態,基於從getPageState的返回值()。

這基本上可以讓我爲啓用/從單一入口點禁用設置完整的頁面。我不喜歡這樣(主要是因爲它驅使我離開我想要的HTML,並且我需要爲每個我想要的HTML屬性維護屬性),我知道我可以在JavaScript的客戶端使用類似的東西。 是否有其他方法可以在Web服務器端的單點控制完整JSP表單的狀態?

回答

1

我會去了解這個問題的方法是將getPageState()方法轉換成一個標記,然後你的自定義標籤內使用該標籤。這樣,您不必在每次調用自定義標記時顯式傳遞頁面狀態。

當然,這意味着你將不得不修改所有的自定義標籤使用這個新標籤,但我認爲這是不必到處是顯式調用獲得頁面狀態代碼更好。更不用說,如果開發人員忘記檢查頁面狀態,就會出現不一致的情況。

而且,現在作爲元素需要如何呈現的決定權在自定義標籤本身(它屬於)。

我看到的唯一問題是,現在你必須做出多個(冗餘)每個元素調用獲得頁面的狀態,這是不是有效的。爲了解決這個問題,你可以讓你的自定義標籤(獲取頁面狀態)設置一個頁面屬性,並讓你的自定義標籤檢查這個頁面屬性來決定是否應該禁用表單元素(另一種方法是創建一個範圍爲AT_END的變量)。

+0

謝謝。問題不在於它的性能方面,而在於如何處理與HTML元素相關的問題。如果我在HTML字段中使用getPageState(),那麼我想用特定樣式和特定的readOnly屬性指示爲禁用,我需要多次調用getPageState,使用taglib我可以做更通用的事情。 – 2011-01-25 12:05:32