#{tableBean.cars}should implement SelectableDataModelif you do not specify an attribute rowKeyin <p:dataTable>.
#{tableBean}. . PrimeFaces. , TableBean , :
@ManagedBean
@ViewScoped
public class TableBean implements Serializable {
private List<Car> cars;
private Car car;
private CarDataModel carsModel;
public TableBean() {
cars = new ArrayList<Car>();
carsModel = new CarDataModel(cars);
}
}
CarDataModel ( , PrimeFaces):
public class CarDataModel extends ListDataModel<Car> implements SelectableDataModel<Car> {
public CarDataModel() {
}
public CarDataModel(List<Car> data) {
super(data);
}
@Override
public Car getRowData(String rowKey) {
List<Car> cars = (List<Car>) getWrappedData();
for(Car car : cars) {
if(car.getModel().equals(rowKey))
return car;
}
return null;
}
@Override
public Object getRowKey(Car car) {
return car.getModel();
}
}
, #{tableBean.carsModel} #{tableBean.cars} <p:dataTable>. , .
<p:dataTable value="#{tableBean.carsModel}" var="car" ... />
, rowKey <p:dataTable>.
<p:dataTable value="#{tableBean.cars}" var="car" rowKey="#{car.model}" ... />
SelectableDataModel. , null . . DataModel org.primefaces.model.SelectableDataModel, , rowKey.