[英]Problems with Clearing InputText in a JSF Datatable
我正在嘗試使用取消按鈕重置數據表內的一些輸入文本字段。 我遇到的問題是,如果我嘗試取消它,但有驗證錯誤,它不允許我這樣做,因為它首先進行驗證,查找和錯誤,並在它可以重新渲染之前輸出錯誤。
顯而易見的解決方案是在按鈕上設置“immediate = true”。 這擺脫了問題,並允許我取消而無需驗證但字段本身未設置為其原始值。 這是因為組件本身永遠不會從后備bean重新獲取數據,因為立即設置為true。
本文非常好地解釋了這一點: http : //wiki.apache.org/myfaces/ClearInputComponents
這篇文章提出了許多解決方案,但它們都不適用於我。
我似乎無法將組件綁定到任何輸入字段,因為它們在數據表中,輸入字段本身的“綁定”屬性不能引用“var”變量。 例如,以下“綁定”屬性是非法的,並給我一個錯誤:
<ice:dataTable id =“poolSharesTbl”var =“node”value =“#{poolSharesManager.nodeModel}”... <ice:column> <ice:inputText binding =“#{node.inputTextBinding}”......
這可能與'var'僅僅是請求范圍有關。
無論如何,有沒有人對如何使這個工作有任何想法?
使用JSF這樣做很痛苦。 您幾乎無法控制驗證。 您最好的選擇是使用JavaScript重置值。 它只用了幾行(或者是一個帶有jQuery的oneliner),而不是幾十行,你可以用jsfish的方式解決這個問題。
無論如何,我最終使用了一個解決方法,只需要大約50行代碼,或多或少,手動執行驗證並將inputtext值(默認為Strings)轉換為Integers。 我以前把javascript和JSF(伍德斯托克圖書館)混在一起的經歷很糟糕,所以我很害怕將它再次引入環境;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.