微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – JSF selectOneButton with ajax update – setter 2次调用

我在WebSphere Application Server 8上使用Primefaces 3.2和ApacheMyfaces.

我有一个带有ajax更新的selectOneButton.
当我切换按钮时,我的setter firsts将值(int)设置为0,然后设置为所选的值:

<p:selectOneButton value="#{graph.view}" id="view">
    <f:selectItem itemLabel="W" itemValue="1" />
    <f:selectItem itemLabel="M" itemValue="2" />
    <f:selectItem itemLabel="Y" itemValue="3" />
    <p:ajax event="change" update=":optform:datecol"/>
</p:selectOneButton>

datecol是我的表单中的另一个selectComponent(optform).

为什么JSF首先将值设置为0然后再设置为2?


它是PrimeFaces selectOneButton Bug.请参阅我的问题here.

最好的祝福
Veote

解决方法:

您可能看到的是,托管bean图在JSF生命周期的早期实例化,并且仅在APPLY_REQUEST_VALUES阶段的后期才为托管属性视图设置适当的值.无论范围如何,托管bean都将在每次请求后重新实例化,因为Web具有固有的无状态特性.

有关更多信息,B​​alusC有一篇关于调试JSF生命周期的精彩文章,其中包含有关如何实现自定义PhaseListener的分步演练,该自定义PhaseListener将帮助您在应用程序中理解和调试此类行为.

http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐