• Jueves 2 de Mayo de 2024, 01:22

Autor Tema:  Promblema con dataTable en JSF2.0 + PRIMEFACES framework  (Leído 4134 veces)

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Promblema con dataTable en JSF2.0 + PRIMEFACES framework
« en: Miércoles 30 de Marzo de 2011, 14:02 »
0
Tengo un problema con la opcion sortBy (Ordenar alfabeticamente) en un componente llamado dataTable de que se utiliza en el framework PRIMEFACES
Aqui podeis ver el componente que quiero utilizar en mi pagina JSF http://www.primefaces.org/showcase/ui/datatableSorting.jsf Lo que ocurre es que la opcion sortBy es la unica que no me funciona.Todas las demas que utilizo me funcionan(paginator,filterBy)
pondre el codigo asi le podeis echar un vistazo tambien.


Este es el codigo de la pagina de composicion JSF
Código: Text
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml"
  6.     xmlns:ui="http://java.sun.com/jsf/facelets"
  7.     xmlns:h="http://java.sun.com/jsf/html"
  8.     xmlns:f="http://java.sun.com/jsf/core"
  9.     xmlns:t="http://myfaces.apache.org/tomahawk"
  10.     xmlns:p="http://primefaces.prime.com.tr/ui">
  11. <ui:composition template="WEB-INF/templates/BasicTemplate.xhtml">
  12.     <ui:define name="resultsForm">
  13.     <h:form enctype="multipart/form-data">
  14.            
  15.         <p:dataTable var="garbage" value="#{resultsController.allGarbage}" dynamic="true" paginator="true" paginatorPosition="bottom" rows="10"  
  16.                  paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
  17.                  rowsPerPageTemplate="5,10,15">        
  18.                
  19.                 <p:column sortBy="#{garbage.filename}" parser="string" filterBy="#{garbage.filename}" filterMatchMode="startsWith">  
  20.                 <f:facet name="header">  
  21.                 <h:outputText value="Filename" />  
  22.                 </f:facet>  
  23.                 <h:outputText value="#{garbage.filename}" />
  24.                  </p:column>
  25.                    
  26.                 <p:column filterBy="#{garbage.description}" filterMatchMode="contains">  
  27.                 <f:facet name="header">  
  28.                 <h:outputText value="Description" />  
  29.                 </f:facet>  
  30.                 <h:outputText value="#{garbage.description}" />  
  31.                  </p:column>
  32.                  
  33.                 <p:column sortBy="#{garbage.uploadDate}" parser="string">  
  34.                 <f:facet name="header">  
  35.                 <h:outputText value="Upload date" />  
  36.                 </f:facet>  
  37.                 <h:outputText value="#{garbage.uploadDate}" />
  38.                  </p:column>               
  39.         </p:dataTable>
  40.     </h:form>
  41.     </ui:define>
  42. </ui:composition>
  43.  
  44. </html>
  45.  
  46.  

Aqui esta el ManagedBean que interactua con la pagina
Código: Text
  1.  
  2. @ManagedBean
  3. @RequestScoped
  4. public class ResultsController {
  5.  
  6. @EJB
  7. private ISearchEJB searchEJB;
  8.  
  9. private Garbage garbage;
  10.  
  11. public List<Garbage> getAllGarbage() {
  12.     return searchEJB.findAllGarbage();
  13. }
  14.  
  15. public Garbage getGarbage() {
  16.     return garbage;
  17. }
  18.  
  19. public void setGarbage(Garbage garbage) {
  20.     this.garbage = garbage;
  21. }  
  22.  
  23.  

Este es el EJB que hace de capa de negocio y proporciona acceso a la base de datos
Código: Text
  1.  
  2. @Stateless(name = "ejbs/SearchEJB")
  3. public class SearchEJB implements ISearchEJB {
  4.  
  5. @PersistenceContext
  6. private EntityManager em;  
  7. public List<Garbage> findAllGarbage() {
  8.     Query query = em.createNamedQuery("findAllGarbage");
  9.     List<Garbage> gList = new ArrayList<Garbage>();
  10.  
  11.     for (Object o : query.getResultList()) {
  12.         Object[] cols = (Object[]) o;
  13.         Garbage tmpG = new Garbage();
  14.         tmpG.setFilename(cols[0].toString());
  15.         tmpG.setDescription(cols[1].toString());
  16.         tmpG.setUploadDate(cols[2].toString());
  17.  
  18.         gList.add(tmpG);
  19.     }
  20.     return gList;
  21. }
  22. }
  23.  
  24.  

Esta es una entidad que utiliza la tecnologia JPA para crear la tabla en la base de datos. Utilizo un comando SQL para devolver solamente aquellos atributos que necesito.
Código: Text
  1.  
  2. @NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;")
  3. @Entity
  4. public class Garbage {
  5.  
  6.     @Id
  7.     @GeneratedValue
  8.     @Column(nullable = false)
  9.     private Long id;
  10.     @Column(nullable = false)
  11.     private String filename;
  12.     @Column(nullable = false)
  13.     private String fileType;
  14.     @Column(nullable = false)
  15.     private String uploadDate;
  16.     @Column(nullable = false)
  17.     private String destroyDate;
  18.     @Lob
  19.     @Column(nullable = false)
  20.     private byte[] file;
  21.     @Column(nullable = false)
  22.     private String description;
  23. //Getters and Setters...
  24.  
  25.  

Como ya he dicho, todo funciona correctamente, es solamente el ordenar lo que no funciona.
A tambien quiero mencionar que en la consola de mi IDE eclipse me sale este mensaje cuando refresco la pagina de resultados i hago click en la flechita the ordenar.
Citar
SEVERE: line 1:61 no viable alternative at character ';'

Las tecnologias que utilizo:
-JEE6
-JSF 2.0(capa de presentacion)
-servidor glassfish V3.0
-framework primefaces-2.2.1

Les estaria muy agradecidos si me pudieseis echar un cable con este problemilla.
Saludos a todos.