【发布时间】:2014-03-18 12:54:12
【问题描述】:
我有两个 selectOneMenu 元素,它们的 id 唯一不同。 valueChangeListener 在第二次尝试时起作用。 第一次尝试,页面正在刷新,但没有去 valueChangeCode,因此没有 value 变化。在第二次尝试时,它会使用 valueChangeCode 并获得新值,并且 selectOneMenu 都显示新值。
<h:selectOneMenu id="changeCurrency" value="#dataBean.showCurrency}" valueChangeListener="#myBean.changePaymentCurreny}"
valueChangeListener="#{myBean.changePaymentCurreny}"
immediate="true"
onchange="submit()">
<f:selectItems value="#{my.currencyList}" />
</h:selectOneMenu>
<h:selectOneMenu id="changeCurrency2"
value="#{dateBean.showCurrency}"
valueChangeListener="#{myBean.changePaymentCurreny}"
immediate="true"
onchange="submit()">
<f:selectItems value="#{myBean.currencyList}" />
</h:selectOneMenu>
在 ValueChangeListener 代码中。
dataBean.setShowCurrency(newCurrency);
FacesContext.getCurrentInstance().renderResponse();
FacesContext.getCurrentInstance().getViewRoot().getChildren().clear();
当我删除以 getChidren.clear 结尾的行并更改其中一个的值时,调用 changeListener 并在第一次尝试时更改值。 在视图中,我更改的只有一个选择菜单显示了新值。其他 selectOnemenu 仍然显示旧值。
dataBean 和 myBean 在 sessionScope 中。当我将 myBean 放在 requestscope 上时,适用于页面加载的 ajax 请求不会导致 mybean 为空。
谁能把这个站说清楚。 非常感谢。
【问题讨论】:
标签: jsf-2