6

ID のように、オブジェクトから一意のフィールドを選択する必要があることはわかっています。次に、私のrowKeyは「item.id」です。これは、すべての itens を dataTable にロードすると正常に動作しますが、新しい項目 (このオブジェクトはまだデータベースに永続化されていません) を null ID で追加すると、dataTable に表示されません。

これに対する解決策は何ですか? ID を rowKey として使用できますが、NULL ID を持つ新しいオブジェクトを追加する必要がある場合があります (これはまだデータベースに保持されていないため)。

私のコードを見てください:

<p:dataTable rowKey="#{item.id}" var="item"
                    value="#{orcamentoMB.itens}"
                    emptyMessage="Não foi encontrado nenhum registro"
                    id="dataTableItens"
                    selection="#{orcamentoMB.selectedItemOrcamento}"
                    selectionMode="single" rowIndexVar="rowIndex"
                    rowStyleClass="#{(rowIndex mod 2) eq 0 ? 'first-row' : 'second-row'}">
4

3 に答える 3

12

その場合は、別の一意の識別子を使用してください。おそらく、hashCode()またはtoString()

rowKey="#{not empty item.id ? item.id : item.hashCode()}"
于 2013-09-14T19:21:24.317 に答える
2

EL 2.2 を使用していないため、メソッドを呼び出せない場合は、Item クラスにメソッドを作成して、rowKey として使用する一意の ID を取得できます。たとえば、次のようになります。

public int getRowKey() { return this.hashCode(); }

そして、JSFページで使用できます:

rowKey="#{item.rowKey}"
于 2013-10-31T07:38:49.623 に答える