1

ナビゲーションメニューからメインコンテンツをajax-refreshしようとしています。

要件はリンクでもまったく同じです

ナビゲーションメニューで動的インクルードコンテンツを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 に答える