繁体   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