我有一个收藏夹图表,点击图表中的某个项目,我必须在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天。
答案 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>