0

チェックボックスベースの選択にprimefacesデータテーブルを使用しており、与えられた例を実装しようとしています。彼らはモデル、たとえば、SelectableDataModel インターフェイスを実装できるuserModelを使用しました。モデルを使用したくないので、この目的のためにrowKeyを使用しました。

例えば

datatable.xhtml

<p:dataTable id="table" var="item" value="#{userBean.allItems}"
       paginatorPosition="bottom" paginator="true" rows="3"
       selection="#{userBean.selectedItems}" rowKey="#{item[0]}">

       <p:column selectionMode="multiple"/>

       <p:columns value="#{userBean.itemColHeader}" columnIndexVar="colIndex" var="colName" >
       <f:facet name="header" >
           <h:outputText value="#{colName}"/>
       </f:facet>
           <h:outputText value="#{item[colIndex]}"/>
       </p:columns>
</p:dataTable>

ここ、

allItems = ArrayList<ArrayList<String>>

selectedItems = ArrayList<ArrayList<String>>

selectedItems = ArrayList<String>

userBean.java

@ManagedBean(name="userBean")
@ViewScoped
public class userBean implements SelectableDataModel {

    private ArrayList<ArrayList<String>> selectedItems;

    public ArrayList<ArrayList<String>> getSelectedItems() {
        return selectedItems;
    }

    public void setSelectedItems(ArrayList<ArrayList<String>> selectedUsers) {
        this.selectedItems = selectedItems;
    }
}  

私の問題:

1) When I select mulitple rows, selectedUsers remains empty.
2) After selecting next page, previous selection get lost. 

@BelusCブログを調べたところ、バインドは可能な解決策ですが、彼の指示では問題を解決できないことがわかりました。コンバーターは必要ですか..? 私のアプローチに何か問題がありますか?ありがとう

更新:1

Arraylist( allItems ) の Arraylist を使用する理由は、datatable をジェネリックにするためだけです。データテーブルを描画する際に列数を気にする必要はありません。そのため、オブジェクトに依存してはならない選択されたアイテムを取得したいのです (: car[ ] selectedcars)

4

3 に答える 3

2

同様の問題があり、を使用して解決し<p:ajax>ました。

最初に akoskm が言うように、一意の行キーを取得します。

次に、配列 ( List<String>[]) (Listより一般的ですArrayList) を使用しますselectedItems

最後に、次を追加できます。

<p:dataTable ...>
    <p:ajax event="rowSelectCheckbox" process="@this"/>
    <p:ajax event="rowUnselectCheckbox" process="@this"/>
    <p:ajax event="toggleSelect" process="@this"/>
</p:dataTable>

<h:form>テーブルの周りにあることを確認してください

これにより、コンポーネントがデータを Bean に確実にプッシュします。ページネーションの問題が解決するかどうかはわかりませんが、お知らせください。

于 2013-01-31T10:23:01.347 に答える
2

rowKey="#{item[0]}"私には意味がありません。すべての反復で同じ (0) オブジェクトを指します。dataTable デモでは、現在のcar.model.

#{item} に変更しようとしましたか?

于 2012-09-30T11:09:49.543 に答える
0

正解:チェックボックス選択のみのPrimefacesデータテーブル

を使用してこの問題を解決できますrowSelectionMode="add"

于 2015-03-05T20:15:49.490 に答える