我有两个类Person
和Pet
,其中一个人可能有多个宠物:
public class Person {
List<Pet> pets;
// Getter & Setter
}
在我看来,我有一个数据表,列出了List<Person>
在搜索中找到的所有人员 ( ):
<p:datatable value="#{SearchBean.resultList}" rowExpandMode="single" id="resultList" var="result" ...>
<p:column>
<p:rowToggler rendered="#{result.pets.size() > 0}" />
</p:column>
<!-- Some other columns for the persons -->
<p:rowExpansion> <!-- See below --> </p:rowExpansion>
</p:datatable>
对于每个人(即行),我添加了一个rowExpansion
包含另一个数据表,其中包含属于此人的所有宠物,如图所示,如果有一些宠物属于此人:
<p:rowExpansion>
<p:datatable value="#{result.pets}" id="petsResultTable" var="petsResult" ...>
<p:column filterBy="#{petsResult.name}">
<h:outputText value="#{petsResult.name}"/>
</p:datatable>
</p:rowExpansion>
由于在我的示例中有些人有很多宠物,因此我添加了过滤宠物的机会。一切看起来都很好,并且显示正确。过滤器也工作正常。
但我的问题是,如果我过滤人 A 的 pets 表并随后扩展人 B 的 pets 表,则该 pets 表也只包含人 A 的过滤后的 pets 表的结果。所以看起来,过滤之一宠物表覆盖所有宠物表的内容。
是否有可能使过滤结果仅可用于过滤它的特定数据表?或者是否有可能在扩展他们的行时“刷新”另一个人 B 的宠物表?