4

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

我有一个内部带有 ajax 更新的 selectOneButton。当我切换按钮时,我的设置器首先将值 (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 是我的表单(optform)中的另一个 selectComponent。

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

解决方案 这是一个 PrimeFaces selectOneButton 错误。在此处查看我的问题。

最好的问候投票

4

1 回答 1

2

您所看到的可能是托管 beangraph在 JSF 生命周期的早期被实例化,并且仅在该APPLY_REQUEST_VALUES阶段的后期才为托管属性设置适当的值view。由于 Web 固有的无状态特性,托管 bean 无论范围如何,都会在每次请求后重新实例化。

有关更多信息,B​​alusC 有一篇关于调试 JSF 生命周期的精彩文章,其中逐步介绍了如何实现自定义 PhaseListener,这将帮助您理解和调试应用程序中的此类行为。

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

于 2012-07-16T12:29:23.453 回答