JSF与selectInputDate的问题

时间:2010-03-18 17:44:10

标签: jsf icefaces selectinputdate

我的selectInputDate有问题: 我有一个支持bean,我绑定到selectInputDate ... 我有一个菜单,当菜单改变时,我将日期设置为selectInputDate绑定的相同属性。

由于某种原因,日期更改正确,但selectInputDate然后调用一个集合并使用旧值覆盖该值...

知道为什么selectInputDate会调用setter吗?

<ice:selectInputDate popupDateFormat="dd-MMM-yyyy" renderAsPopup="true" value="#{dateContoller.date}"/>

<ice:selectOneMenu value="#{dateContoller.dateRange}" valueChangeListener="#{dateRangeDateContoller.dateRangeChanged}"  >
....
</ice:selectOneMenu> 

(dateRangeChanged将当前日期设置为现在)

1 个答案:

答案 0 :(得分:2)

只要新提交的值与原始值不同,valueChangeListener就会运行一些代码逻辑。但是你显然对价值的变化不感兴趣,你实际上对重置提交的价值感兴趣。

摆脱valueChangeListener并在bean的动作方法中做你的事。

如果出于某种原因这不是一个选项,那么您需要详细说明您认为使用valueChangeListener是正确解决方案的问题。可能有一些解决方法可以保留valueChangeListener,例如调用FacesContext#renderResponse(),以便JSF不再运行update model values(和invoke action!)阶段,或者使用ValueChangeEvent#queue()让它在invoke action阶段重新执行。

要了解有关JSF生命周期的更多信息,以及何时/为何/如何调用/调用一个和另一个,您可能会发现this practical article有用。