[英]Can't modify h:inputText if it's enabled
我在這里有一個簡單的問題。 如果我問這是因為我既沒有找到任何答案,也沒有谷歌。
我正在使用IceFaces 3.1。
我正在從java bean填充inputtext。 它僅在具有disabled =“true”屬性時才有效。
這是xhtml代碼:
<h:inputText value="#{PageCode.quantity}" disabled="false"/>
和java代碼(在某處稱為表單):
this.setQuantity(1);
它不包含值。 這不是CSS,因為我已經調試了它,並且有一個空值。
但是,如果我將其更改為:
<h:inputText value="#{PageCode.quantity}" disabled="true"/>
有用。 但我需要它啟用,以便編輯它...
它怎么可能有效?
顯然你在錯誤的時刻調用了setQuantity(1)
。
未禁用時, <h:inputText>
將在更新模型值階段設置其提交的值。 因此,如果您在更新模型值階段之前手動設置它(例如,在驗證程序或值更改偵聽器內的驗證階段),那么稍后它將被提交的值覆蓋。 如果禁用該組件,則不會設置其提交的值。 這解釋了您所看到的症狀。
您需要確保在調用操作階段(即更新模型值階段之后 setQuantity(1)
調用setQuantity(1)
。
基於最常見的初學者錯誤,我猜你實際上是在valueChangeListener
方法中完成了這項工作,而你對舊值不感興趣。 你不應該這樣做。 您應該使用<f:ajax listener>
代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.