2

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でこのワークフローを実現するための最良のパターンは何ですか。再利用したいので、各ページで役割セレクターを複製したくありません。この長い投稿をお読みいただき、ありがとうございます。私はあなたの応答と提案に感謝します。

4

1 に答える 1

1

このための最良のパターンは、複合コンポーネントを実装することです。

于 2012-07-29T11:31:27.683 に答える