理解JSF阶段的问题

理解JSF阶段的问题,jsf,Jsf,我在理解JSF阶段时遇到了一个问题。我有以下问题 在我的主页上,我创建了一个panelGroup,其中包括一个xhtml DynamicCaly <h:panelGroup id="padding"> <ui:include src="#{navigationHandler.currentPage}" /> </h:panelGroup> 有什么解决办法吗?我做错了什么?我相信你把JSF组件(通常前缀为'h','f','p')

我在理解JSF阶段时遇到了一个问题。我有以下问题

在我的主页上,我创建了一个panelGroup,其中包括一个xhtml DynamicCaly

    <h:panelGroup id="padding">
        <ui:include src="#{navigationHandler.currentPage}" />
    </h:panelGroup>

有什么解决办法吗?我做错了什么?

我相信你把JSF组件(通常前缀为'h','f','p')和facelet组件(通常前缀为'ui')混淆了。它们不是一回事。JSF组件通常成为树的一部分并参与JSF阶段。Facelet组件仅在还原视图期间存在。我通常认为facelet组件是预处理器。它们通常生成JSF组件

在您的示例中,
被替换为
navigationHandler.currentPage
RESTORE\u VIEW
时引用的源文件中指定的任何JSF组件。在
恢复\u视图
后,不再有
,因此不会重新计算,也不会更新

在调用应用程序期间,
navigationHandler.currentPage
会更新,但组件树仍然相同。如果您可以在调用应用程序期间强制执行自重定向,则生命周期将重新启动,并重新评估

    <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>
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