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和一个列表,我如何才能让它工作
谢谢
# 1 楼答案
我通过重写toString方法解决了这个问题,如下所示:
然后我在filterBy属性中调用了toString方法: