我在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具有固有的无状态特性.
有关更多信息,BalusC有一篇关于调试JSF生命周期的精彩文章,其中包含有关如何实现自定义PhaseListener的分步演练,该自定义PhaseListener将帮助您在应用程序中理解和调试此类行为.
http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。