使用丰富的“值”属性:选择标签值不会存储在 bean 属性中,即每当我从列表中进行新选择时,新值不会存储在 bean 属性中,它保留初始值的实例字段。
这是我的代码:
我在 bean skinBean 中有一个属性 baseSkin。我也定义了它的 setter 和 getter。每当我做出新的选择时仍然没有得到价值
使用丰富的“值”属性:选择标签值不会存储在 bean 属性中,即每当我从列表中进行新选择时,新值不会存储在 bean 属性中,它保留初始值的实例字段。
这是我的代码:
我在 bean skinBean 中有一个属性 baseSkin。我也定义了它的 setter 和 getter。每当我做出新的选择时仍然没有得到价值
这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 侦听器也会触发。