Witam
Staram się (na początku) zgodnie z dokumentacją
http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionRadioCheckbox.jsf
Mam problem, bo nie wyświetlają mi się dane w dataTable. To znaczy liczba rekordów się zgadza (w moim uproszczonym przykładnie 3), ale brak jest danych. Oczywiście jak okaże się poniżej w tym przypadku jest różny typ danych - dziwne, że w przykładzie z linka powyżej to działa.
dataTable.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test PrimeFaces DataTable</title>
</h:head>
<h:body>
<h:form>
<p:dataTable id="parametry" var="param" value="#{tableControllers.parameters}" rows="10"
selection="#{tableControllers.selectedParameters}">
<p:column selectionMode="multiple" style="width:18px" />
<p:column headerText="Nazwa operacji">
#{param.parameterName} <!--Tu jest błąd: Unknown property 'parameterName' -->
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
TableControllers.java
<code = java>package baza.jpa.controllers;
import baza.jpa.Parameter;
import baza.jpa.controllers.view.ParameterDataModel;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class TableControllers {
private ParameterDataModel parameters;
private Parameter[] selectedParameters;
public ParameterDataModel getParameters() {
return parameters;
}
public void setParameters(ParameterDataModel parameters) {
this.parameters = parameters;
}
public Parameter[] getSelectedParameters() {
return selectedParameters;
}
public void setSelectedParameters(Parameter[] selectedParameters) {
this.selectedParameters = selectedParameters;
}
/**
* Creates a new instance of TableControllers
*/
public TableControllers() {
List<Parameter> paramList = new ArrayList<Parameter>();
paramList.add(new Parameter(1,"Param 1"));
paramList.add(new Parameter(2,"Param 2"));
paramList.add(new Parameter(3,"Param 3"));
parameters = new ParameterDataModel(paramList);
}
}
Parameter.java
<code = java>package baza.jpa;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "Parameter")
public class Parameter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer parameterId;
private String parameterName;
public Parameter() {
}
public Parameter(Integer parameterId,String parameterName) {
this.parameterId = parameterId;
this.parameterName = parameterName;
}
public Integer getParameterId() {
return parameterId;
}
public void setParameterId(Integer parameterId) {
this.parameterId = parameterId;
}
public String getParameterName() {
return parameterName;
}
public void setParameterName(String parameterName) {
this.parameterName = parameterName;
}
@Override
public String toString() {
return "baza.jpa.Parameter[ parameterId=" + parameterId + " ]";
}
}
ParameterDataModel.java
<code = java>package baza.jpa.controllers.view;
import baza.jpa.Parameter;
import java.util.List;
import javax.faces.model.ListDataModel;
import org.primefaces.model.SelectableDataModel;
public class ParameterDataModel extends ListDataModel<Parameter> implements SelectableDataModel<Parameter> {
public ParameterDataModel() {
}
public ParameterDataModel(List<Parameter> data) {
super(data);
}
@Override
public Parameter getRowData(String rowKey) {
List<Parameter> parameters = (List<Parameter>) this.getWrappedData();
for(Parameter parameter : parameters) {
if(parameter.getParameterId().toString().equals(rowKey))
return parameter;
}
return null;
}
@Override
public Object getRowKey(Parameter parameter) {
return parameter.getParameterId();
}
}
Jak napisałem w dataTable.xhtml NetBeans w tym miejscu wyrzuca błąd:
#{param.parameterName} <!--Tu jest błąd: Unknown property 'parameterName' -->
Próbowałem kilku(nastu) kombinacji, np. żeby value="#{tableControllers.parameters}" wstawiać Listę "List<Parameter> i dawać rowKey, ale też to nie działało;(