簡體   English   中英

如果已啟用,則無法修改h:inputText

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

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