![](/img/trans.png)
[英]DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled, but I have already defined rowKey
[英]DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled
我試圖在啟用 RowSelection 的情況下實現一個 DataTable Editable。
但它拋出了一個異常:
啟用選擇時,DataModel 必須實現 org.primefaces.model.SelectableDataModel。
我在對象類和托管 bean 類中都實現了 DataModel,但錯誤是相同的。 現在只有一張空白表格出現在我面前。 請幫忙。
這個問題有兩種解決方案:
第一個更簡單。 將rowKey="#{myEntity.carID}"
到您的p:dataTable
應該可以解決您的問題
如果您嘗試將新項目添加到基礎列表並忘記為新項目的 rowKey 賦值(rowKey 為 null),則會出現此錯誤。
除了 rags 給出的解決方案,我想提一下,如果行鍵是“NULL”或者如果你的整個 List 是“NULL”,你可能會得到同樣的錯誤,即使你已經完成了上面提到的所有步驟。 如果要顯示 0 行,請返回一個包含 0 個項目的列表。 不要為列表返回null
。
該錯誤消息表明您的 DataModel 未實現SelectableDataModel
接口。 它需要是一個單獨的類。 這是 PF 中的一個示例,展示了需要如何完成數據表定義:
import org.primefaces.model.SelectableDataModel;
public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car> {
...
}
不要忘記在 EL 語法中將 rowKey 值括起來。
rowKey="row.id"
會失敗但是
rowKey="#{row.id}"
將會成功。
可能錯誤是因為在我的情況下 row.id 為空或 null 解決方案是改變這個:
rowKey="row.id"
對此:
rowKey="row"
和數據表的對象,例如
List<Row> collectionOfDataTable = new ArrayList<>();
Row (Object) 實現了可序列化:
public class Row implements Serializable{...}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.