1

行の編集と列の並べ替えをサポートする単純な primefaces 4.0 テーブルを作成しました。2 つのエントリを作成し、降順に並べ替えました。行エディターで 1 つの行の値を変更すると、行を保存した後、他の行のデータによって上書きされます。テーブルをリロードすると、すべてが正常に戻ります。

これがすべての手順です。

  1. Spring ROO を使用して単純なプロジェクトを作成する (3 つの文字列フィールドを持つ 1 つのエンティティのみ)
  2. pom.xmlでprimefacesをバージョン4.0に設定し、ソースコードをprimefaces 4.0に変更しました。
  3. テーブルに行の編集と列の並べ替えを追加しました。
  4. サーバーを起動し、すべての値が「1」の最初のエントリとすべての値が「2」の 2 番目のエントリを入力しました。
  5. 任意の列を降順に並べ替える (結果: "2" が上、"1" が下)
  6. RowEditor で任意の値を編集して保存します。
  7. 編集された行の値が、ビュー内の他の行の値で上書きされるようになりました。

これは私の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 のバグですか? ヒントや回避策はありますか?現在の並べ替えとページネーションを失うことなく、行の編集後にテーブルを更新する最も簡単な方法は何ですか?

ありがとう !!!アレックス

4

2 に答える 2

0

あなたの customerBean は ViewScoped である必要があります。または、私の例のようにする必要があるよりも sessionScoped を持っている場合:

 <p:dataTable id="settingsTbl" value="#{settingsBean.settingsList}" var="item" editable="true">

.....

 public List<Settings> getSettingsList() {  
    if(settingsList==null){
        settingsList = settingsFacade.findAll();
    }
    return settingsList;
}
于 2014-07-12T18:26:08.503 に答える