我有一个p:dataTable存储已处理表单的结果,并执行以下操作:
我有一个过滤值的arraylist,但是我没有在bean中做任何事情。在提交时,我正在调用一个actionListener,它将dataTable转换为primefaces.components.datatable.DataTable,然后在我处理表单之前调用它上面的resetValue()(参见下面的代码片段)。
我尝试了多种方法来重置,清除和更新dataTable,但我无法解决上述问题。仅供参考,这是我的p:dataTable标签:
<p:dataTable
id="resultsDataTable"
rendered="#{entityReportBean.isResultsPopulated}"
var="change"
value="#{entityReportBean.entityChangeDto}"
styleClass="resultsPanel"
rows="100"
paginator="true"
paginatorPosition="top"
paginatorTemplate="#{PreviousPageLink} Previous {CurrentPageReport} Next {NextPageLink}"
filterEvent="enter"
filteredValue="#{entityReportBean.filteredResults}" >
这是actionListener:
public void onSubmit() {
FacesContext context = FacesContext.getCurrentInstance();
DataTable resultsTable = (DataTable) context.getViewRoot().findComponent("results:resultsDataTable");
resultsTable.resetValue();
...
我对JSF / Primefaces相当新,所以可能会有一些我不知道的基本操作。有什么建议吗?
答案 0 :(得分:1)
所以我意识到在我的actionListener中尝试做任何事都没有意义,因为没有在sort上调用它。所以我在dataTable上添加了一个ajax'sort'事件,并向监听器添加了resultsTable.updateValue(entityChangeDto);
。现在一切都很好。