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