【问题标题】:Can't modify h:inputText if it's enabled如果启用,则无法修改 h:inputText
【发布时间】:2012-11-18 16:48:45
【问题描述】:

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

我正在使用 IceFaces 3.1。

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

这里是xhtml代码:

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

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

this.setQuantity(1);

它不包含值。不是CSS,因为我调试过,有一个空值。

但是如果我把它改成:

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

它有效。但我需要启用它以便对其进行编辑……

怎么可能?

【问题讨论】:

    标签: java jsf icefaces


    【解决方案1】:

    显然你打错电话了setQuantity(1)

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

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

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

    另见:

    【讨论】:

    • 是的,你猜对了 :) this.setQuantity() 在 valueChangeListener 中被调用。我以为这是监听器的功能,所以我是菜鸟。 IceFaces 支持这个 (F:ajax) 标签吗?
    • 它只是标准 JSF 的一部分。
    猜你喜欢
    • 2014-03-15
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    相关资源
    最近更新 更多