![](/img/trans.png)
[英]Python: how to iterate over list of list while iterating over each item in each nested list
[英]How iterate over List<T> and render each item in JSF Facelets
我想知道如何在Facelet中顯示以下獲得的List<T>
:
public List<T> searchByString(String string) {
return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
<h:dataTable>
是合適的方法嗎?
您將需要對其進行迭代。 JSF 2提供了三個迭代組件。 假設User
實體如下所示,
@Entity
public class User {
private @Id Long id;
private String username;
private String email;
private LocalDate birthdate;
// Add/generate getters+setters.
}
並且將搜索結果分配為bean的List<User> users
屬性,該屬性可以作為#{bean}
,
@Named @RequestScoped
public class Bean {
private List<User> users;
// Add/generate postconstruct+getter.
}
以下是一些基於此的示例:
<h:dataTable>
,這是一個生成HTML <table>
的UI組件。
<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>
,一個不會生成HTML標記的UI組件(因此,您必須自己以所需的方式編寫所有HTML,可以輕松將其更改為例如<ul><li>
或<dl><dt><dd>
或<div><span>
等):
<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>
,一個在視圖構建時而不是視圖渲染時運行的標記處理程序(背景說明在這里: JSF2 Facelets中的JSTL ...有意義嗎? ),它也不會產生任何HTML標記:
<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>
您可以將List保存在一個類變量中,給它一個getter和(也許)一個setter。 將searchByString
方法聲明為void
,並用a進行調用(假設您使用的是PrimeFaces):
<p:commandLink update="@form" process="@this" action="#{myBean.searchByString}">
myBean:
public void searchByString(String string) {
userList = getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
只要您的表格位於您剛剛更新的表格中,就可以在其中顯示List
。
<p:dataTable var="user" value="#{myBean.userList}">
<p:column headerText="Name">
<h:outputText value="#{user.name}" />
</p:column>
</p:dataTable>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.