Come eseguire iterate su List e rendere ogni elemento in Facelets JSF

Mi chiedo come visualizzare un List come ottenuto sotto in un Facelet:

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

Un sarebbe un modo adeguato?

Hai bisogno di iterare su di esso. JSF 2 offre tre componenti di iterazione fuori dalla scatola. A condizione che l’ quadro User sembri di seguito,

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

e che i risultati della ricerca sono assegnati come proprietà List users di un bean disponibile come #{bean} ,

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

ecco alcuni esempi basati su di esso:

  1. , un componente dell’interfaccia utente che genera una

    HTML.

      #{user.id} #{user.username} #{user.email} #{user.birthdate}  
  2. , un componente dell’interfaccia utente che non genera markup HTML (quindi, dovresti scrivere tutto quell’HTML nel modo desiderato, che potrebbe essere facilmente modificato ad esempio

    , o

    , o

    , ecc.):

      
    #{user.id} #{user.username} #{user.email} #{user.birthdate}
  3. , un gestore di tag che viene eseguito durante il tempo di visualizzazione della vista invece di visualizzare il tempo di rendering (spiegazione dello sfondo qui: JSTL in Facelets JSF2 ha senso? ), inoltre non produce alcun markup HTML:

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

Guarda anche:

  • Esercitazione su Java EE 6 – Aggiunta di componenti a una pagina – utilizzando
  • Come e quando dovrei caricare il modello dal database per h: dataTable

Puoi salvare la tua lista in una variabile di class, dargli un getter e (forse) un setter. Dichiara il metodo searchByString come void e chiamalo con diciamo a (purché tu stia utilizzando PrimeFaces):

  

MyBean:

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

a condizione che il tuo tavolo sia in una forma che hai appena aggiornato, potresti visualizzare l’ List in esso contenuto.