JSF2 フェイスレットを使用しています。
<ui:composition>
と<ui:insert>
タグを使用して、あるページから別のページにコードを挿入しようとしています。
ページ B のコードを含むページ A があります。
<h:form id="formIdPageA">
...
<h:form id="formIdPageB">
エラーが発生するため、問題はフォームIDのようです:
System error: Cannot find component with identifier ":formIdPageA:fileListId" in view.
ページ A に挿入されるページ B のコードを次に示します。ここで ID を確認できます。
<tr>
<td colspan="2">
<p:selectOneMenu id="locationId" value = "#{PFMultiFileSelectMgmtBean.selectedLocationId}">
<p:ajax update=":formIdPageA:fileListId" listener="#{PFMultiFileSelectMgmtBean.LocationChangeEvent}"/>
<f:selectItems value="#{PFJobMgmtBean.outputLocationList}"/>
</p:selectOneMenu>
</td>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<p:selectManyCheckbox id="fileListId" value="PFMultiFileSelectMgmtBean.selectedFiles" layout="pageDirection">
<f:selectItems value="#{PFMultiFileSelectMgmtBean.fileNames}" />
</p:selectManyCheckbox>
</td>
</tr>
そして、これは私がそれをページAに挿入する方法です:
<p:dialog id="basicDialog" header="Select Files" widgetVar="dlgMultiFileSelect" modal="true" height="500" width="500" resizable="false">
<ui:insert>
<ui:include src="/pageB.xhtml"/>
</ui:insert>
</p:dialog>
このようなページを含めることが可能かどうかは誰にもわかりませんか? <ui:composition>
本文タブの前に移動しますか、それともページ B の後に移動しますか? これでよろしいですか:
<body>
<f:view>
<h:form id="formIdPageB">
<ui:composition>...
?
わかりました、それを見つけました:
問題は、PrimeFaces コンポーネントを使用して、次のよう<p:dialog>
にページ A outside<h:form>
および outsideに配置したことです。<body>
</h:form>
</f:view>
</body>
<p:dialog...>
<ui:include src="/pageB.xhtml"/>
</p:dialog>
それは間違っているようです。今<p:dialog>
、フォーム内に移動しましたが、すべて問題ありません。