Очевидно, вы не реализовали SelectableDataModel#getRowData()
и / или getRowKey()
должным образом. Самая базовая реализация будет выглядеть следующим образом, при условии, что у вас есть Long id
, представляющий PK в вашем Product
классе:
@Override
public Object getRowKey(Product product) {
return product.getId();
}
@Override
public Product getRowData(String rowKey) {
Long id = Long.valueOf(rowKey);
for (Product product : (List<Product>) getWrappedData()) {
if (product.getId().equals(id)) {
return product;
}
}
return null;
}
getRowKey()
должен использоваться для возврата идентификатора строки выбираемых строк. getRowData()
должен использоваться для возврата всего объекта, который связан с идентификатором строки.
Не имеет отношения к конкретной проблеме, обратите внимание, что EL, который есть в атрибуте oncomplete
, разрешается для каждого просмотра, а не для запроса. Возможно, вы захотите это исправить. См. Также, например, Выражение EL внутри p: commandButton onclick не обновляет / повторно отображает запрос ajax?