【发布时间】:2014-02-26 21:12:11
【问题描述】:
我正在使用 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(也许希望得到一些不同的结果?)。我不知道为什么会这样。
我在这里做错了什么?
【问题讨论】:
-
除非是拼写错误,否则我不认为
containing是有效的filterMatchMode。你应该有contains -
@kolossus 虽然你是对的,但谢谢你,我也尝试过
exact或将其保留为默认值,我得到了同样的结果。还有什么问题吗?
标签: java jsf primefaces