2

我正在使用 JSF 2.1 和 primefaces 3.4。

我所有的 xhtml 视图都由具有页眉、左侧导航面板、页脚和内容的布局组成。托管 bean 在视图范围内

在我的大多数观点中,我使用preRenderView类型的f:event侦听器来初始化某些属性和服务。在侦听器中,我有条件语句来检查发请求。只有当请求不是回发时,它才会在preRenderView监听器中执行完整的代码。

即使我通过左侧导航面板链接导航到任何其他页面(例如从页面A到页面B ),视图范围也不会被破坏,当我再次返回页面A时,发请求的检查返回true .不知道为什么会这样。

感谢有人可以帮助我吗?

提前致谢。

4

1 回答 1

1

您需要通过 GET 而不是 POST 进行导航。

即,使用<h:link>or<h:button>代替<h:commandLink>or<h:commandButton>用于普通的页面到页面导航。这种方式isPostback()将返回false

此外,您不清楚如何观察到视图范围的 bean 没有被破坏。您是否在 bean 的构造函数上放置了一个调试断点,以查看它是否在请求新页面时被调用?如果它确实是完全相同的实例,那么只有当您实际上有条件地包含一个新页面而不是真正导航到物理上不同的视图时才会发生这种情况。

于 2013-03-16T01:44:02.617 回答