working tabla not filtrar filtered example column jsf sorting primefaces datatable

jsf - tabla - primefaces datatable filter



PrimeFaces dataTable sorting no funciona (2)

Tengo problemas para que el comportamiento de clasificación del componente DataFactory de PrimeFaces funcione como está documentado. (Estoy usando PrimFaces 4.0, JSF 2.1.12 y Tomcat 7.0.) El problema que estoy viendo no se corresponde con ninguno de los otros informes / discusiones de problemas relacionados con PF dataTable, hasta donde sé. Para explorar el problema, creé un ejemplo basado estrechamente en el ejemplo de ShowCase de usar una tabla de datos clasificada, copiando el código fuente de ShowCase para el bean de respaldo tableBean (incluida la generación de datos de automóviles locales para el ejemplo; no se requiere acceso externo a DB) y la clase de autos de apoyo. El xhtml es también una copia muy cercana del ejemplo de ShowCase:

<!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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <h:body> <h:form> <p:dataTable id="dataTable" var="car" value="#{tableBean.carsSmall}"> <f:facet name="header"> Ajax Sorting </f:facet> <p:column id="modelHeader" sortBy="#{car.model}"> <f:facet name="header"> <h:outputText value="Model" /> </f:facet> <h:outputText value="#{car.model}" /> </p:column> <p:column sortBy="#{car.year}"> <f:facet name="header"> <h:outputText value="Year" /> </f:facet> <h:outputText value="#{car.year}" /> </p:column> <p:column sortBy="#{car.manufacturer}"> <f:facet name="header"> <h:outputText value="Manufacturer" /> </f:facet> <h:outputText value="#{car.manufacturer}" /> </p:column> <p:column sortBy="#{car.color}"> <f:facet name="header"> <h:outputText value="Color" /> </f:facet> <h:outputText value="#{car.color}" /> </p:column> </p:dataTable> </h:form> </h:body> </html>

Cuando se ejecuta el xhtml, aparece la tabla de datos, pero con solo una columna mostrada como disponible para la clasificación (es decir, con el icono de flecha arriba / abajo en el encabezado).

La tabla de datos tiene dos problemas:

  1. Solo una de las columnas (Año) se muestra como utilizable para la clasificación. (Year es una propiedad de tipo "int" en la clase Car, mientras que las otras tres columnas son de tipo String, por lo que un aspecto del problema es que se está ignorando la etiqueta sortBy = "# {car.xxx}" para los campos String .)
  2. La columna Año, de hecho, no es ordenable. Al hacer clic en las flechas arriba / abajo del encabezado Año no tiene ningún efecto. Una devolución de llamada del servidor ocurre cuando se hace clic en el encabezado Año, pero la tabla no está ordenada. He rastreado una ELException que ocurre durante la devolución de llamada del servidor, en la cual el código no maneja la expresión "# {car.0}". Ese "0" debería ser, sin duda, "año", y la expresión fallida es, sin duda, la razón por la cual no está ocurriendo ninguna clasificación.

Se agradecería cualquier ayuda al descubrir por qué este ejemplo tan simple (copiado casi textualmente de las fuentes de ShowCase) de tratar de usar una tabla de datos clasificable PrimeFaces me está causando dolor.


quite la libra y el corchete de esta manera:

De esto:

<p:column sortBy="#{car.manufacturer}">

A esto

<p:column sortBy="manufacturer">

Tuve el mismo problema y fue simplemente por eso.


Tu primer hilo es

<p:dataTable id="dataTable" var="car" value="#{tableBean.cars}">

entonces tableBean tiene un método

public List<Car> getCars() { return carEJB.findAll(); }

pero su bean no tiene ninguna variable para guardar el resultado del método después de la ordenación.

Solución:

public class CarController { ... private List<Car> cars; ... privare void reset() { cars = carEJB.findAll(); } ... public List<Car> getCars() { return cars; } }