FacesException: DataModel musi implementować org.primefaces.model.SelectableDataModel, gdy zaznaczenie jest włączone
Próbuję nauczyć się PF, więc zacząłem od wyświetlania datatable i przechodzenia do następnej strony na parametrach przekazujących rowClick, ale utknąłem z następującym błędem. Znalazłem podobny problem dla tego pytania, ale nie miałem jeszcze szczęścia. Mam nadzieję, że ktoś mi pomoże.
Dostaję następujący błąd:
<code>DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled. Caused by: javax.faces.FacesException - DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled. </code>
moja strona:
<code> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head> <title>Primefaces 3.1</title> </h:head> <h:body> <h:form id="form"> <p:dataTable value="#{tableBean.cars}" var="var" rowkey="#{var.model}" selection="#{tableBean.car}" selectionMode="single"> <p:column> <f:facet name="header"> <h:outputText styleClass="outputText" value="Model"></h:outputText> </f:facet> <h:outputText styleClass="outputText" value="#{var.model}"></h:outputText> </p:column> <p:column> <f:facet name="header"> <h:outputText styleClass="outputText" value="Color"></h:outputText> </f:facet> <h:outputText styleClass="outputText" value="#{var.randomColor}"></h:outputText> </p:column></p:dataTable> </h:form> </h:body> </html> </code>
moje klasy fasoli:
<code>@ManagedBean @ViewScoped public class TableBean extends ListDataModel<Car> implements SelectableDataModel<Car>{ private List<Car> cars; private Car car; public List<Car> getCars() { cars = new ArrayList<Car>(); Car car1 = new Car(); car1.setModel("BMW"); car1.setRandomColor("Black"); cars.add(car1); Car car2 = new Car(); car2.setModel("Audi"); car2.setRandomColor("White"); cars.add(car2); return cars; } public String onRowSelect(){ System.out.println("Row Click!!!"); return "otherpage";//Does this nav works???if not how??? } public Car getCar() { return car; } @Override public Car getRowData(String pArg0) { // TODO Auto-generated method stub return null; } @Override public Object getRowKey(Car pArg0) { // TODO Auto-generated method stub return null; } } </code>
InneBean:
<code>public class Car{ private String model; private String randomColor; public String getRandomColor() { return randomColor; } public void setRandomColor(String pRandomColor) { randomColor = pRandomColor; } public String getModel() { return model; } public void setModel(String pModel) { model = pModel; } } </code>