PrimeFaces 数据表无法使用活动过滤器进行排序
PrimeFaces datatable fails sorting with active filter
PrimeFaces 版本:6.0
在我的数据中 table 我可以对列进行排序和过滤,但不能同时进行。
以下场景:
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;
}
在我看来你必须使 MyDataHolder
可序列化;
public class MyDataHolder implements Serializable
我最好的阐述与 here 相同(这同样适用于 ViewScoped bean)。 ViewScoped(和范围更广的)bean 必须是可序列化的,因此它们的所有属性必须相同。
PrimeFaces 版本:6.0
在我的数据中 table 我可以对列进行排序和过滤,但不能同时进行。
以下场景:
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;
}
在我看来你必须使 MyDataHolder
可序列化;
public class MyDataHolder implements Serializable
我最好的阐述与 here 相同(这同样适用于 ViewScoped bean)。 ViewScoped(和范围更广的)bean 必须是可序列化的,因此它们的所有属性必须相同。