web-dev-qa-db-ja.com

選択が有効な場合、DataModelはorg.primefaces.model.SelectableDataModelを実装する必要があります

RowSelectionを有効にして1つのDataTable Editableを実装しようとしていました。

しかし、それは例外を投げています:

選択が有効な場合、DataModelはorg.primefaces.model.SelectableDataModelを実装する必要があります。

オブジェクトクラスとマネージドBeanクラスの両方にDataModelを実装しましたが、エラーは同じです。これで、空のテーブルのみが表示されます。助けてください。

23
user1281029

この問題には2つの解決策があります。

  1. RowKey、selection、selectionMode属性をdataTableに追加する
  2. SelectableDataModelインターフェースを実装し、dataTableを埋めるためにListDataModelのようなDataModelを拡張する

1つ目はSimplerです。 rowKey="#{myEntity.carID}"p:dataTableに追加すると問題が解決します

39
rags

基になるリストに新しいアイテムを追加しようとして、新しいアイテムのrowKeyに値を割り当てることを忘れた場合(rowKeyがnull)、このエラーが発生する可能性があります。

21
Nublodeveloper

ぼろによって与えられるソリューションに加えて、行キーが「NULL」である場合、またはリスト全体が「NULL」である場合、上記のすべての手順を完了した場合でも、同じエラーが発生する可能性があります。 0行を表示する場合は、0項目のリストを返します。リストに対してnullを返さないでください。

3
RajdeepS

エラーメッセージは、DataModelがSelectableDataModelインターフェイスを実装していないことを示しています。別のクラスである必要があります。これは、PFショーケースのデータテーブル定義の実行方法の例です。

import org.primefaces.model.SelectableDataModel;  

public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car> {    
   ...
}
2
Matt Handy

EL構文内でrowKey値を囲むことを忘れないでください。

rowKey="row.id" 

失敗しますが

rowKey="#{row.id}" 

成功します。

0
J Slick