You're going need to iterate over it. JSF 2 offers three iteration components out the box. Provided that the User
entity look like below,
@Entity
public class User {
private @Id Long id;
private String username;
private String email;
private LocalDate birthdate;
// Add/generate getters+setters.
}
and that the search results are assigned as a List<User> users
property of a bean which is available as #{bean}
,
@Named @RequestScoped
public class Bean {
private List<User> users;
// Add/generate postconstruct+getter.
}
here are some examples based on it:
<h:dataTable>
, an UI component which generates a HTML<table>
.<h:dataTable value="#{bean.users}" var="user"> <h:column>#{user.id}</h:column> <h:column>#{user.username}</h:column> <h:column><a href="mailto:#{user.email}">#{user.email}</a></h:column> <h:column>#{user.birthdate}</h:column> </h:dataTable>
<ui:repeat>
, an UI component which generates no HTML markup (so, you'd have to write all that HTML in the desired fashion yourself, which could easily be changed to e.g.<ul><li>
, or<dl><dt><dd>
, or<div><span>
, etc):<table> <ui:repeat value="#{bean.users}" var="user"> <tr> <td>#{user.id}</td> <td>#{user.username}</td> <td><a href="mailto:#{user.email}">#{user.email}</a></td> <td>#{user.birthdate}</td> </td> </ui:repeat> </table>
<c:forEach>
, a tag handler which runs during view build time instead of view render time (background explanation here: JSTL in JSF2 Facelets... makes sense?), it also doesn't produce any HTML markup:<table> <c:forEach items="#{bean.users}" var="user"> <tr> <td>#{user.id}</td> <td>#{user.username}</td> <td><a href="mailto:#{user.email}">#{user.email}</a></td> <td>#{user.birthdate}</td> </td> </c:forEach> </table>