tabView で ui:include を使用できません。含まれている Facelet を使用して動的タブを作成しようとしています。
これが私のコードです:
<p:tabView id="panelGl" var="tabContent" value="#{mainPageBackingBean.tabs}" widgetVar="panelGlJs" style="height: 100%;" dynamic="true" >
<p:ajax event="tabClose" listener="#{mainPageController.onTabClose}" oncomplete="questionDialogWV.show()" update="@(this) :questionForm:questionFormPanel" />
<p:ajax event="tabChange" onstart="setActive()" update="@(this)" />
<p:tab title="#{tabContent.title}" titletip="#{tabContent.description}" closable="true">
<ui:include src="#{mainPageBackingBean.tabContents}" />
</p:tab>
</p:tabView>
そして#{mainPageBackingBean.tabContents}
ランタイム値はこの Facelet を指しています:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:p="http://primefaces.org/ui">
<p:panel>
<h:form>
<p:commandButton id="testEmail" value="" process="@this" actionListener="#{communicationChannelsController.testEmailChannel()}"/>
</h:form>
</p:panel>
</ui:composition>
上記をui:include
外部で使用すると、p:tabView
正常に動作します(communicationChannelsController.testEmailChannel()
問題なく呼び出すことができます)。また、上記のファイルの内容をコピーすると、p:tab
すべて正常に動作します。
問題は、組み合わせp:tab
てui:include
機能しない場合、この Bean メソッドが呼び出されないことです。
mainPageBackingBean
私の例のようなナビゲーション Bean を使用して動的タブを作成する最善の方法は何ですか?