我在我的JSF頁面上有一個inputText,並且附加了JavaScript日曆彈出窗口。 有條件地我將inputText禁用屬性設置爲true和false。當禁用爲true時,InputText值爲空
當我設置disabled = true
並且當我將JSF值寫入數據庫時,inputText中的值爲null。我相信這是由於disabled = true
。
即使disabled = true
有什麼辦法保留inputText框中的值嗎?
我正在使用JSF 1.1。
我在我的JSF頁面上有一個inputText,並且附加了JavaScript日曆彈出窗口。 有條件地我將inputText禁用屬性設置爲true和false。當禁用爲true時,InputText值爲空
當我設置disabled = true
並且當我將JSF值寫入數據庫時,inputText中的值爲null。我相信這是由於disabled = true
。
即使disabled = true
有什麼辦法保留inputText框中的值嗎?
我正在使用JSF 1.1。
另一種解決方法是將提交表單時,臨時啓用此輸入,並且模型更新後,再次禁用它。還有一些使用隱藏輸入的解決方案,但不幸的是我不記得它是如何工作的。
你應該只讀=真正的,而不是試圖禁用= TRUE(就像在普通的HTML)
瀏覽器是繼HTML 4.0.1 spec:
一個成功的控制是提交 「有效」。
...省略的文字...
- 控制是disabled不能成功。
禁用窗體控件不作爲窗體的一部分提交。
作爲附加安全措施,如果JSF組件renderer發現isDisabled() == true
,則不應處理Apply Request Values階段中的值。
如果渲染器選擇實現解碼行爲,它必須諮詢「已禁用」和「只讀」組件的屬性被渲染,如果任一屬性的值等於要忽略大小寫字符串「真」(不帶引號),解碼方法必須不採取任何行動並立即返回。
由於應用請求值階段運行第一,這些布爾值的評估不能由任何在您的表單提交影響(除非你綁定他們#{param.foo}
表達 - 提防任何安全方面的考慮)。
您的表單設計和提交策略必須考慮到這些限制。
當您設置爲disabled = true
或readonly = true
時,JSF機制不會發送(或處理)這些值。這就是爲什麼你在數據庫中寫入空值的原因。
作爲一種解決方案,您必須將值存儲在變量中,並使用屬性disabled = true
將其顯示在inputText
中。
如果我使readonly爲true,那麼從日曆彈出窗口中,用戶可以在inputText字段中選擇一個日期值。 – user75ponic
也許你應該澄清你想禁用什麼,什麼不應該禁用... – Tristan
基於一個條件,我想禁用inputText。 InputText附帶一個彈出日曆,供用戶選擇日期。如果我只讀取inputText,則用戶可以從彈出日曆中選擇日期。理想情況下,我希望用戶不要在inputText中進行任何更改。就像你提到的禁用會使jsf頁面中的值爲null。 – user75ponic