有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当filterBy是一个对象列表时,是否可以过滤p:dataTable?

我正在使用Primefaces中的组件p:dataTable,对对象列表进行排序时遇到了问题

我有一个电子邮件列表,在这个列表中,我还有一个带有他们电子邮件别名的列表。这是我的代码:

public class Email { private String idGoogle; private String email; public Email() { } public Email(String idGoogle, String email) { this.idGoogle = idGoogle; this.email = email; } public String getIdGoogle() { return idGoogle; } public void setIdGoogle(String idGoogle) { this.idGoogle = idGoogle; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }

public class EmailSector extends Email implements Cloneable { private Sector sector = new Sector(); private String password; private String domain; private String description; private List<Email> aliasList = new ArrayList<>(); private List<EmailSector> emailSectorList = new ArrayList<>(); public EmailSector() { } ...

<h:panelGroup id="emailsTable" > <div class="emailsTable" > <p:dataTable id="filterTable" var="item" value="#{emailSectorBean.sessionBean.itemPagina.emailSectorList}" widgetVar="dataWidget" emptyMessage="Nenhum registro encontrado com os dados buscados."> <p:column filterBy="#{item.email}" headerText="E-Mail" filterMatchMode="contains" filterValue="#{emailSectorBean.sessionBean.filtroAlteracao}"> <h:outputText value="#{item.email}" /> </p:column> <p:column filterBy="#{item.description}" headerText="Descrição" filterMatchMode="contains"> <h:outputText value="#{item.description}" /> </p:column> <p:column filterBy="#{item.sector.description}" headerText="sector" filterMatchMode="contains"> <h:outputText value="#{item.sector.description}" /> </p:column> <p:column headerText="Alias" filterBy="#{item.listaAlias}" filterMatchMode="contains"> <h:dataTable var="alias" value="#{item.listaAlias}" > <p:column> <h:outputText value="#{alias.email}"/> </p:column> </h:dataTable> </p:column> </p:dataTable> </div> </h:panelGroup>

在这一点上:

<p:column headerText="Alias" filterBy="#{item.aliasList}" filterMatchMode="contains"> <h:dataTable var="alias" value="#{item.aliasList}" > <p:column> <h:outputText value="#{alias.email}"/> </p:column> </h:dataTable> </p:column>

我打印电子邮件扇区的所有别名。问题是别名列表的类型是电子邮件。。。所以我想知道是否有可能使用filterBy和一个列表,我如何才能让它工作

谢谢

Tags:  

共 (1) 个答案

  1. # 1 楼答案

    我通过重写toString方法解决了这个问题,如下所示:

    &13; 第13部分,;
        @Override
        public String toString() {
            return this.email;
        }
    和#13;
    和#13;

    然后我在filterBy属性中调用了toString方法:

    &13; 第13部分,;
    <p:column headerText="Alias" filterBy="#{item.aliasList.toString()}" filterMatchMode="contains">
       <h:dataTable var="alias" value="#{item.aliasList}" >
          <p:column>
            <h:outputText value="#{alias.email}"/>
          </p:column>
       </h:dataTable>
    </p:column> 
    和#13; 和#13;

    它工作得很好