Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何迭代列表<;T>;并在JSF Facelets中呈现每个项目_List_Jsf_Facelets_Data Presentation - Fatal编程技术网

List 如何迭代列表<;T>;并在JSF Facelets中呈现每个项目

List 如何迭代列表<;T>;并在JSF Facelets中呈现每个项目,list,jsf,facelets,data-presentation,List,Jsf,Facelets,Data Presentation,我想知道如何在Facelet中显示下面获得的列表: public List<T> searchByString(String string) { return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList(); } public List searchByString(字符

我想知道如何在Facelet中显示下面获得的
列表

public List<T> searchByString(String string) {
    return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
public List searchByString(字符串){
返回getEntityManager();
}

是一种合适的方法吗?

您可以将列表保存在类变量中,给它一个getter和(可能)一个setter。将
searchByString
方法声明为
void
,并使用a调用它(假设您使用的是PrimeFaces):

如果您的表位于您刚刚更新的表单中,则可以在其中显示
列表

 <p:dataTable var="user" value="#{myBean.userList}">  
    <p:column headerText="Name">  
        <h:outputText value="#{user.name}" />  
    </p:column>  
 </p:dataTable>  

您需要对其进行迭代。JSF2提供了三个现成的迭代组件。假设
用户
实体如下所示

@Entity
public class User {
    private @Id Long id;
    private String username;
    private String email;
    private LocalDate birthdate;
    // Add/generate getters+setters.
}
搜索结果被指定为bean的
列表用户
属性,该bean可用作
{bean}

@Named @RequestScoped
public class Bean {
    private List<User> users;
    // Add/generate postconstruct+getter.
}
@Named@RequestScoped
公共类Bean{
私人名单用户;
//添加/生成postconstruct+getter。
}
以下是一些基于此的示例:

  • ,一个生成HTML
    的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>
    
    
    #{user.id}
    #{user.username}
    #{user.birthdate}
    
  • ,一个不生成HTML标记的UI组件(因此,您必须自己以所需的方式编写所有HTML,可以轻松地更改为,例如,
    • ,或
      ,或
      ,等等):

      
      #{user.id}
      #{user.username}
      #{user.birthdate}
      
    • ,一个在视图生成时而不是视图呈现时运行的标记处理程序(此处的背景说明:),它也不会生成任何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>
      
      
      #{user.id}
      #{user.username}
      #{user.birthdate}
      
    • 另见:
      <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>
      
      <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>
      
      <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>