PrimeFaces版本:6.0
在我的数据表中,我可以对列进行排序和过滤,但不能同时对它们进行排序和过滤。
以下情景:
Column1 Column2
http://someurl.com 1
http://anotherurl.com 5
当我在Column1
过滤器中输入值时。只有过滤的行是可见的。现在当我点击Column1
时,我得到以下结果:
Column1 Column2
0
0
Column2
映射到原始值,解释零值。
作为一种解决方法,我添加了:
<p:ajax event="sort" onstart="PF('mytableWidget').filter();"/>
但是在执行filter()
函数之前,我仍然可以看到上面的空结果几毫秒。
<p:dataTable id="mytable" widgetVar="mytableWidget" value="#{bean.data}" var="item">
<p:column headerText="Column1" sortBy="#{item.column1}" filterBy="#{item.column1}" filterMatchMode="contains">
#{item.column1}
</p:column>
<p:column headerText="Column2" sortBy="#{item.column2}">
#{item.column2}
</p:column>
bean.data
已映射到ArrayList<MyDataHolder>
。
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(of = "column1")
public class MyDataHolder {
String column1;
int column2;
}
答案 0 :(得分:2)
在我看来,你必须使MyDataHolder
可序列化;
public class MyDataHolder implements Serializable
我最好的选择与here相同(同样适用于ViewScoped bean)。 ViewScoped(和更广泛的范围)bean必须是可序列化的,因此它们的所有属性必须相同。