Cómo iterar sobre List y representar cada elemento en JSF Facelets

Me pregunto cómo mostrar una List como se obtiene a continuación en un Facelet:

 public List searchByString(String string) { return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList(); } 

¿Sería una una forma adecuada?

Necesitarás iterar sobre eso. JSF 2 ofrece tres componentes de iteración fuera de la caja. Siempre que la entidad User vea a continuación,

 @Entity public class User { private @Id Long id; private String username; private String email; private LocalDate birthdate; // Add/generate getters+setters. } 

y que los resultados de la búsqueda se asignan como una propiedad de List users de un bean que está disponible como #{bean} ,

 @Named @RequestScoped public class Bean { private List users; // Add/generate postconstruct+getter. } 

aquí hay algunos ejemplos basados ​​en él:

  1. , un componente de UI que genera un HTML

    .

      #{user.id} #{user.username} #{user.email} #{user.birthdate}  
  2. , un componente de UI que no genera código HTML (por lo tanto, tendría que escribir todo ese HTML de la manera deseada, que podría cambiarse fácilmente, por ejemplo,

    o

    , o

    , etc.):

      
    #{user.id} #{user.username} #{user.email} #{user.birthdate}
  3. , un controlador de tags que se ejecuta durante el tiempo de comstackción de vista en lugar de ver el tiempo de renderización (explicación de fondo aquí: JSTL en Facelets JSF2 … ¿tiene sentido? ), tampoco produce ningún marcado HTML:

      
    #{user.id} #{user.username} #{user.email} #{user.birthdate}

Ver también:

  • Tutorial de Java EE 6 – Agregar componentes a una página – usando
  • Cómo y cuándo debo cargar el modelo de la base de datos para h: dataTable

Puedes guardar tu lista en una variable de clase, darle un getter y (quizás) un setter. Declare el método searchByString como void y searchByString con digamos a (siempre que esté utilizando PrimeFaces):

  

myBean:

 public void searchByString(String string) { userList = getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList(); } 

siempre que su tabla se encuentre en un formulario que acaba de actualizar, podría mostrar la List en ella.

       
Intereting Posts