0

パラメータを設定するときに、変数を使用してバッキング Bean を定義する方法はありますか。私たちのアプリケーションでは、テーブルのすべてではないにしても、ほとんどの列で複数のフィルタリング基準を許可しています。これを実装する各列定義にコピーされるコードのセクションを開発しました。列定義の例:

<p:column styleClass="dataTableColumnAlignLeft" id="c0"
   style="width: 200px" exportable="false">
   <ui:include src="/html/common/dataTableColumnHeader5_2.xhtml">
      <ui:param name="programId" value="backingBeanName" />
      <ui:param name="fieldName" value="depositName" />
      <ui:param name="displayLessThanFilter" value="false" />
      <... several more ui:include parameters />
   </ui:include>
   <h:outputText value="#{cashReceiptsDeposList.depositName}" />
</p:column>

含まれているコードは、列見出しを作成し、列を並べ替えてユーザー ヘルプ テキストを表示するためのコマンド ボタンを備えています。これらはすべて正常に機能します。ただし、ユーザーから各列の複数のフィルタリング パラメータを取得するダイアログを実行するコマンド ボタンも含まれていました。これは PF 3.2 では正常に機能していましたが、5.2 に変換すると機能しなくなりました。ドキュメントを見ると、ダイアログをテーブル定義に含めるべきではないことがわかりました。そのため、ダイアログをテーブル定義の外に移動しようとしています。ただし、これは、ui:include で取り込まれたコードに設定されたパラメーターがダイアログに表示されないことを意味します。次のように、バッキング Bean にフィルター処理される列に固有のパラメーターを設定することで、これを克服できます。

<p:commandLink tabindex="-1" rendered="#{displayFilters}"
   update=":filterDialogForm:filterDialog"
   oncomplete="PF('filterDialog').show();" id="#{fieldName}FPL"
   title="#{label}">
   <f:setPropertyActionListener target="#{backingBeanName.label}" value="#{label}" />
   <f:setPropertyActionListener target="#{backingBeanName.fieldName}" value="#{fieldName}" />
   <f:setPropertyActionListener target="#{backingBeanName.displayContainsFilter}" value="#{displayContainsFilter}" />
   <p:graphicImage rendered="#{displayFilters}" tabindex="-1"
      style="border:0px;" width="20" height="20"
      value='#{empty filtersHandler..../>
</p:commandLink>

次に、ダイアログはこれらのバッキング Bean 要素のコンテンツを取得できるため、どのフィルターを要求するかがわかります。Bean 名を変数として指定できれば、コピーしたスニペットの 1 つのコピーだけが必要ですが、実際の Bean 名を入力する必要がある場合は、1000 を超えるテーブルを持つすべてのページにコピーが必要になります。現在のところ。target="#{#{programId}.field}" など、変数を使用するいくつかの方法を試しましたが、これまでのところ、それらはすべて解析に失敗したか、変数ではなく静的 Bean 名として解釈されました。bean名を変数で指定することはできますか?

環境: PF 5.2、jBoss 7.1.3、jdk-7、jsf 2.2

4

0 に答える 0