0

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

这是我的代码:

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

4

1 回答 1

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 侦听器也会触发。

于 2013-04-29T14:41:06.727 回答