PrimefacesでJSF2.0を使用しています。システム内のユーザーのリストを含むデータテーブルを含むページがあります。各ユーザーはロールのコレクションを持つことができるので、ロールの束を選択するためのボタンが欲しいです。これをajaxセレクターにして、他のページから再利用できるようにしたかったので、これが私がレイアウトした方法です。
ユーザーリストページ
<h:form prependId="false">
<p:dataTable id="userList" var="user" value="#{userBean.users}">
<p:column id="modelHeader">
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{user.name}" />
</p:column>
<p:column>
<f:facet name="header">
Select Roles
</f:facet>
<p:commandButton id="selectButton" oncomplete="roleDialog.show()" icon="ui-icon-search" title="Select Roles" />
</p:column>
</p:dataTable>
</h:form>
ユーザーリストページ内でダイアログが定義されていますが、再利用性を促進するためにコンテンツがインクルードに移動されます
<p:dialog header="Roles" widgetVar="roleDialog" resizable="true" id="roleDialog" modal="true">
<h:form prependId="false">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<p:dataTable id="roleList" var="user" value="#{roleBean.roles}">
<p:column id="modelHeader">
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{role.name}" />
</p:column>
<p:commandButton id="selectButton" actionListener="#{roleBean.selectRoles}" title="Select Roles" />
</h:panelGrid>
</h:form>
</p:dialog>
私の質問は、次のことをどのように達成するかわからないということです。
- ダイアログのコンテンツをレンダリングする前に、引数を基準としてロールセレクターに渡したいのですが、f:setPropertyActionListenerを介してこれを行うことができます。正しいですか?
- 役割を選択した後、選択したIDをユーザーリストページに戻したいと思います。addCallbackParamを介してこれを行うことができますよね?
- 次に、その値をuserList Beanに戻し、アクションリスナーに渡して、このロールをユーザーに関連付けたいと思います。
JSFでこのワークフローを実現するための最良のパターンは何ですか。再利用したいので、各ページで役割セレクターを複製したくありません。この長い投稿をお読みいただき、ありがとうございます。私はあなたの応答と提案に感謝します。