我有一个p:dataTable存储已处理表单的结果,我执行以下操作:
-
填写表单值 .
-
提交 .
-
填充数据表 - 过滤任何列 .
-
更改表单值 .
-
提交 .
-
数据表填充了新结果 .
-
对任何列进行排序 - 显示来自#3的过滤结果 .
我有一个过滤值的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的新手,所以可能会有一些我不知道的基本操作 . 有什么建议?
1 回答
所以我意识到在我的actionListener中尝试做任何事都没有意义,因为没有在sort上调用它 . 所以我在dataTable上添加了一个ajax 'sort'事件,并在监听器中添加了
resultsTable.updateValue(entityChangeDto);
. 现在一切都很好 .