动态包含xhtml页面中的页面

时间:2011-09-09 09:34:53

标签: jsf jstl

我有一个收藏夹图表,点击图表中的某个项目,我必须在rich:tab中包含一个页面。收藏夹图表是使用jQuery构建的,在每个叶子上单击事件我做一个ui:include with jstl check。请找到以下代码。

    <rich:tabPanel>
        <rich:tab label="#{mnOrdrMsgs.mainordr}" immediate="true"
            id="mainorderTab" styleClass="tabPanel">

            <c:if test="${favouritesBean.selectedNaviItem != null}">
                <ui:include src="#{favouritesBean.selectedPage}" />
            </c:if>

            </rich:tab>
        <rich:tab label="#{mnOrdrMsgs.archiv}" immediate="true"
            id="archivTab" styleClass="tabPanel">
        Archive
    </rich:tab>
    </rich:tabPanel>

问题是favouritesBean.selectedPage的值始终为null。在这种情况下,任何人都可以帮助。我被困了2天。

2 个答案:

答案 0 :(得分:0)

“我认为问题来自于favouritesBean.selectedNaviItem的分配。”

  

对于第一次渲染阶段,bean属性selectedNaviItem为null,因此不评估selectedNaviItem,并且默认情况下始终显示selectedPage值。

解决方案:

  

使用空字符串或默认值初始化bean。

答案 1 :(得分:0)

JSTL标记与JSF标记不同步,正如您对编码所期望的那样。 JSTL标记在JSF视图构建时执行,它只生成一个带有JSF标记的树。 JSF标记在JSF视图渲染时执行,生成仅包含HTML元素的树。

在这种特殊情况下,您希望使用JSF标记。使用<ui:fragment><h:panelGroup>

<ui:fragment rendered="#{favouritesBean.selectedNaviItem != null}">
    <ui:include src="#{favouritesBean.selectedPage}" />
</ui:fragment>