valueChangeListner未针对<rich:select>标记</rich:select>触发

时间:2013-04-26 10:13:12

标签: richfaces

使用rich的“value”属性:select标签值不会存储在bean属性中,即 每当我从列表中进行新选择时,新值都不会存储在bean属性中,它会保留实例字段的初始值。

这是我的代码:

我在bean skinBean中有一个属性baseSkin。我也定义了它的setter和getter。 每当我做出新的选择时,仍然没有得到价值

1 个答案:

答案 0 :(得分:1)

valueChangeListener无法像人们期望的那样发挥作用。它在提交表单并且解析器检查当前值时执行。

您还没有包含代码,但我假设您希望在单击列表中的项目后立即将新值存储在bean中,这可以完成:

<rich:select id="select">
    <f:selectItems value="#{bean.list}" var="item" itemLabel="#{item.value}" />
    <a4j:ajax event="selectitem" oncomplete="updateBean(#{rich:component('select')}.getValue())" />
</rich:select>

<a4j:jsFunction name="updateBean">
    <a4j:param assignTo="#{bean.value}" name="value" />
</a4j:jsFunction>

当然,您必须检查值是否确实发生了变化,因为即使您再次选择相同的值,ajax侦听器也会触发。