データテーブルに問題があります。TieredMenu を持つ最後の列と、項目をパラメーターとして使用するバッキング Bean への各 MenuItem 呼び出しを除いて、すべての列のヘッダーに sortBy があります。Datatable には、1 つのフィールドで並べ替えられたリストが読み込まれます。DataModel は使用していません。
問題は、任意のフィールドで注文した後、パラメーターとして渡されたアイテムが実際のものではなく初期値になることです。
例えば:
最初のリストは 3 番目のフィールドで並べ替えられます。
gomez 5 4
alvarez 3 5
carballo 3 8
最初のフィールドによる順序の後:
alvarez 3 5
carballo 3 8
gomez 5 4
最初の行をクリックすると、alvarez ではなく gomez が表示されます。
これはデータテーブルのコードです:
<p:dataTable scrollable="true" scrollHeight="290"
value="#{bb.list}"
id="tablaEnAtencion" var="item" width="100%" rows="10000"
sortBy="#{item.third}" sortOrder="descending"
filteredValue="#{bb.listFiltered}">
...
<p:column style="text-align:center;" width="24">
<p:commandButton id="dynaButtonAtencion" icon="ui-icon-gear" type="button" style="width:100%;" />
...
<p:tieredMenu overlay="true" trigger="dynaButtonAtencion" my="left top" at="left bottom" style="width:170px">
<p:menuitem value="action" actionListener="#{bb.act1(item)}" />
</p:tieredMenu>
</p:column>
</p:dataTable>
プロジェクトには多くの DataTable があり、この問題はこのテーブルでのみ発生します。私は試しました: - いくつかの列の並べ替えを削除する - リスナーなしで並べ替えイベントを追加する - 並べ替えリスナーを使用して並べ替えイベントを追加し、このメソッドでリストをコードで並べ替える - フィルターを削除する - f:setPropertyActionListener を使用して値を bb に送信する
バッキング Bean は ViewScoped です。Primefaces 3.4、faces 2.1.13。