我正在使用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(可能希望得到一些不同的结果?)。我不知道为什么会这样。
我在这做错了什么?
答案 0 :(得分:3)