簡體   English   中英

清除JSF數據表中的InputText的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM