1
我正在使用Primefaces创建可筛选表。数据表筛选器不工作
<p:dataTable id="tasksTable" value="#{taskView.currentTasks}" var="task" rowIndexVar="index" filteredValue="#{taskView.filteredTasks}">
<p:column headerText="Name">
<h:outputText value="#{task.name}"></h:outputText>
</p:column>
<p:column headerText="Type" filterBy="type"
filterMatchMode="containing">
<h:outputText value="#{task.type}"></h:outputText>
</p:column>
<p:column headerText="Date Started">
<h:outputText value="#{task.startTime}"></h:outputText>
</p:column>
<p:column headerText="Details">
<h:outputText value="#{task.details}"></h:outputText>
</p:column>
</p:dataTable>
这是我的看法:
@Component("taskView")
@Scope("session")
public class TaskView{
private List<TaskDTO> currentTasks;
private List<TaskDTO> filteredTasks;
//getters and setters
}
的问题是,过滤不工作。显然,它使一个没有收到答案的ajax调用只是一直在等待。在后端,currentTasks列表的getter被多次调用。
在我看来,Primefaces进行ajax调用,出于某种原因在服务器端它调用表结果的getter很多次(也许希望得到一些不同的结果?)。我不知道为什么会发生。
我在这里做什么错了?
除非它是一个错字,我不认为'contains'是一个有效的'filterMatchMode'。你应该有'包含' – kolossus
@kolossus虽然你是对的,但是谢谢你,我也尝试过'exact'或者将它作为默认值,并且我得到了同样的结果。还有其他问题吗? – Dragos