1

我在这里有一个简单的问题。如果我问这是因为我在这里和谷歌都找不到任何答案。

我正在使用 IceFaces 3.1。

我正在从 java bean 填充输入文本。它仅在具有disabled="true"属性时才有效。

这是xhtml代码:

<h:inputText value="#{PageCode.quantity}" disabled="false"/>

还有java代码(在某处称为form):

this.setQuantity(1);

它不包含该值。它不是 CSS,因为我已经调试过了,并且有一个 null 值。

但是,如果我将其更改为:

 <h:inputText value="#{PageCode.quantity}" disabled="true"/>

有用。但我需要启用它以便编辑它等等......

怎么可能?

4

1 回答 1

3

看来你setQuantity(1)打错时间了。

未禁用时,<h:inputText>将在更新模型值阶段设置其提交的值。因此,如果您在更新模型值阶段之前手动设置了它(例如,在验证器或值更改侦听器内部的验证阶段),那么稍后它会被提交的值覆盖。如果该组件被禁用,则它不会设置其提交的值。这解释了您所看到的症状。

您需要确保在更新模型值阶段之后setQuantity(1)的调用操作阶段调用。

基于最常见的初学者错误,我猜你实际上是在一种valueChangeListener方法中完成了这项工作,而你对旧值不感兴趣。你不应该那样做。你应该<f:ajax listener>改用。

也可以看看:

于 2012-11-30T12:59:56.757 回答