行の編集と列の並べ替えをサポートする単純な primefaces 4.0 テーブルを作成しました。2 つのエントリを作成し、降順に並べ替えました。行エディターで 1 つの行の値を変更すると、行を保存した後、他の行のデータによって上書きされます。テーブルをリロードすると、すべてが正常に戻ります。
これがすべての手順です。
- Spring ROO を使用して単純なプロジェクトを作成する (3 つの文字列フィールドを持つ 1 つのエンティティのみ)
- pom.xmlでprimefacesをバージョン4.0に設定し、ソースコードをprimefaces 4.0に変更しました。
- テーブルに行の編集と列の並べ替えを追加しました。
- サーバーを起動し、すべての値が「1」の最初のエントリとすべての値が「2」の 2 番目のエントリを入力しました。
- 任意の列を降順に並べ替える (結果: "2" が上、"1" が下)
- RowEditor で任意の値を編集して保存します。
- 編集された行の値が、ビュー内の他の行の値で上書きされるようになりました。
これは私のjsfコードです:
<p:dataTable editable="true" id="list" value="#{customerBean.allCustomers}" var="customer" rendered="#{customerBean.dataVisible}" resizableColumns="false" paginator="true" paginatorTemplate=" {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,25,50" rows="10">
<p:ajax event="rowEdit" listener="#{customerBean.onRowEdit}" update=":growlForm:growl" />
<p:columns value="#{customerBean.columns}" var="column" columnIndexVar="colIndex"
sortBy="#{customer[column]}">
<f:facet name="header">
<h:outputText value="#{applicationBean.getColumnName(column)}" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{customer[column]}" /></f:facet>
<f:facet name="input"><p:inputText id="#{customer[column]}Input" value="#{customer[column]}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:columns>
<p:column style="width:6%">
<p:rowEditor />
</p:column>
そして、これはサーバーコードです:
public void onRowEdit(RowEditEvent event) {
this.setCustomer((Customer) event.getObject());
this.persist();
}
Roo、Primeface、JSF、または JQuery のバグですか? ヒントや回避策はありますか?現在の並べ替えとページネーションを失うことなく、行の編集後にテーブルを更新する最も簡単な方法は何ですか?
ありがとう !!!アレックス