【问题标题】:Problems understanding JSF Phases理解 JSF 阶段的问题
【发布时间】: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


    【解决方案1】:

    我相信您将 JSF 组件(通常带有前缀“h”、“f”、“p”)与 facelet 组件(通常带有前缀“ui”)混淆了。他们不是一回事。 JSF 组件通常成为树的一部分并参与 JSF 阶段。 Facelet 组件仅在RESTORE_VIEW 期间存在。我通常将 facelet 组件视为预处理器。它们通常生成 JSF 组件。

    在您的示例中,&lt;ui:include src="#{navigationHandler.currentPage}" /&gt; 被替换为navigationHandler.currentPageRESTORE_VIEW 时引用的源文件中指定的任何 JSF 组件。在RESTORE_VIEW之后,就没有&lt;ui:include /&gt;了,所以不会重新评估,也不会更新。

    INVOKE_APPLICATION 期间,navigationHandler.currentPage 更新,但组件树仍然相同。如果您可以在 INVOKE_APPLICATION 期间强制进行自我重定向,则生命周期将重新启动,&lt;ui:include src="#{navigationHandler.currentPage}"/&gt; 将被重新评估。

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 2011-06-14
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2012-12-11
      • 2012-12-10
      • 1970-01-01
      • 2019-09-27
      相关资源
      最近更新 更多