动态包含页面在xhtml页面



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

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

问题在于favoritesbean的值。selectedPage总是空的。有人能帮帮忙吗?

"我认为问题来自于favoritesbean . selectednaviitem的分配。"

bean属性selectedNaviItem在第一次呈现阶段为空,因此不会对selectedNaviItem进行评估,并且默认情况下总是显示selectedPage值。

解决方案:

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

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>

最新更新