【发布时间】:2011-10-01 04:16:30
【问题描述】:
我在理解 JSF 阶段时遇到问题。我有以下问题。
在我的主页上,我创建了一个 panelGroup,并包含一个动态的 xhtml。
<h:panelGroup id="padding">
<ui:include src="#{navigationHandler.currentPage}" />
</h:panelGroup>
在我的菜单栏中,我有一些这样的代码:
<p:submenu label="#{translator.menuentry_insured}">
<p:menuitem value="#{translator.menuentry_add_insured}" actionListener="#{navigationHandler.addInsured}" update=":padding" />
<p:menuitem value="#{translator.menuentry_search_insured}" actionListener="#{navigationHandler.searchInsured}" update=":padding"/>
</p:submenu>
当我点击菜单项时,首先调用“currentPage”方法,返回当前活动的页面。之后,调用 actionListener,将页面设置为新页面。如果我再次单击同一链接,则会显示正确的页面。
我知道问题出在 JSF 生命周期中(“调用应用程序”阶段之前的“恢复视图”阶段),但我不知道如何解决。
这是我自己的 PhaseListener 的输出,仅用于调试目的:
BEFORE: RESTORE_VIEW 1
Using current page: addInsured.xhtml
AFTER: RESTORE_VIEW 1
BEFORE: APPLY_REQUEST_VALUES 2
AFTER: APPLY_REQUEST_VALUES 2
BEFORE: PROCESS_VALIDATIONS 3
AFTER: PROCESS_VALIDATIONS 3
BEFORE: UPDATE_MODEL_VALUES 4
AFTER: UPDATE_MODEL_VALUES 4
BEFORE: INVOKE_APPLICATION 5
Setting current page to searchInsured.xhtml
AFTER: INVOKE_APPLICATION 5
BEFORE: RENDER_RESPONSE 6
AFTER: RENDER_RESPONSE 6
有什么解决办法吗?我做错了什么?
【问题讨论】:
标签: jsf