次のコードは、データベースのリストをループして、各エントリのデータ テーブルを作成します。各エントリには、データ テーブルに表示される列のリストがあります。私が抱えている問題は、複合コードの p:columns の値属性が、複合コードが 2 回目に呼び出されたときに変更されないことです。列の初期リストをキャッシュしているようです。新しい列リストを使用するように列タグをリセットする方法はありますか。
UPDATE 2番目のデータテーブルは、最初のセルの最初の行に以前のデータテーブルの行の値の名前を使用しているようです。他のすべては問題ありません。ここにスクリーンショットがあります
2番目の更新2番目のデータテーブルの2番目のページに移動してから最初のページに戻ると、画像の丸で囲まれた壊れたセルが正しい値で自己を修正することにも気付きました。
3 回目の更新以下のコードでは、ui:repeat タグを使用しています。私は primeface:accordian タグも使用しましたが、どちらも問題を引き起こします。ui:repeat タグを ac:forEach タグに変更したところ、下の画像の問題が修正されました。私がまだ抱えている問題は、データテーブルごとに動的にタブを作成できるように、これをprimefacesアコーディオンタグに含める必要があることです。私の問題はデータ テーブルの p:columns タグにあると思っていましたが、現在は ui:reat または p:accordian タグにあるようで、どちらも value="#{myBeanList}" 属性を使用しています
<ui:repeat var="codetable" value="#{pc_Maintenence.codeMaintenenceTables}">
<util:maintenence_code pageBean="#{pc_Maintenence}" dataTableInfo="#{codetable}"
paginator="true" rows="10"/>
</ui:repeat>
これは、上記のコード util:maintenence_code で呼び出される複合コードです。
<composite:interface>
<composite:attribute name="pageBean" required="true" />
<composite:attribute name="dataTableInfo" required="true" />
<composite:attribute name="paginator" type="java.lang.Boolean" />
<composite:attribute name="rows" />
</composite:interface>
<composite:implementation>
<p:panel id="pnl_doc_code_table">
<p:dataTable value=#{cc.attrs.pageBean.getDataTableList(cc.attrs.dataTableInfo.tableListName)}"
var="tblVar" paginator="#{cc.attrs.paginator}"
rows="#{cc.attrs.rows}" dynamic="true" cache="false">
<p:columns var="column" styleClass="columns" id="columns" value="#{cc.attrs.dataTableInfo.columns}">
#{tblVar[column.name]}
</p:columns>
</p:dataTable>
</p:panel>
</composite:implementation>