1

我正在尝试 ajax 刷新导航菜单中的主要内容。

链接中的要求完全相同

如何通过导航菜单 ajax-refresh 动态包含内容?(JSF SPA)

按照 BalusC 回答的模式,

<h:panelGroup id="content" layout="block">
<h:form id="contentform">
    <h:panelGroup rendered="#{bean.page == 'include1'}">
        <ui:include src="include1.xhtml" />
    </h:panelGroup>
    <h:panelGroup rendered="#{bean.page == 'include2'}">
        <ui:include src="include2.xhtml" />
    </h:panelGroup>
    <h:panelGroup rendered="#{bean.page == 'include3'}">
        <ui:include src="include3.xhtml" />
    </h:panelGroup>
</h:form>

每个 xhtml 都有自己的带有 @PostConstruct 方法的托管 bean,问题是所有 @PostConstruct 方法都被调用,而与渲染条件无关。

4

1 回答 1

2

<ui:include/>是一个标签处理程序,<h:panelGroup/>而是一个渲染时标签。不同之处在于它们都在构建生命周期的不同时间处于活动状态。在这种特殊情况下,<ui:include/><h:panelGroup/>. 因此,虽然您的渲染条件可能会在渲染时隐藏动态包含,但无论如何,包含仍会通过研磨机,从而导致处理后的托管 bean。

您应该将rendered属性放在<ui:include/>相反的位置。确保渲染条件不依赖于其他渲染时间结构

于 2013-03-27T12:52:44.720 回答