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