PrimeFaces 分页器选择
PrimeFaces paginator selection
我有一个 PrimeFaces (5) DataTable 并且喜欢在视图中存储页面大小选择,以便用户在 returns 到视图时看到相同的行数。
但我从文档中看到的是有一个可以捕获的 page
事件,但它不会给我当前选择的页面大小。我得到的最接近的是获取事件的源(DataTable)并获取行属性,但它仅包含行数 before 应用新值。
在 SO 上,我发现 a solution here,但在我看来这不是实现它的最佳方式,必须使用一些内联 JQuery 东西。
在我看来,在会话中保留页面大小选择是一个不那么奇特的功能,所以我想一定有一个好的解决方案吧?
正如您已经注意到的,事件在选定的行数应用于table之前被触发。目前,在 更改行数后 没有触发任何事件。
但是,有一个可能的解决方法:
- 将您的数据table绑定到支持 bean
- 在没有任何侦听器的情况下使用 AJAX
page
-事件。相反,在 ajax 请求完成后调用 <p:remoteCommand>
。
- 将您的 actionListener 方法添加到
<p:remoteCommand>
。
- 在此方法中,检查数据table的行数。这是新值。
- 请记住,
page
事件不仅会在更改行数时触发,还会在页面更改时触发。
示例:
XHTML/JSF
<h:form>
<p:remoteCommand name="pageChanged" actionListener="#{tableBean.onPageChanged}"/>
<p:dataTable binding="#{tableBean.table}" paginator="true" rowsPerPageTemplate="5,10,20" rows="5">
<p:ajax event="page" process="@none" oncomplete="pageChanged()" />
<!-- columns here -->
</p:dataTable>
</h:form>
TableBean.java
private DataTable table;
public void onPageChanged(){
int numRows = table.getRows();
// ...
}
//getter/setter for table
我有一个 PrimeFaces (5) DataTable 并且喜欢在视图中存储页面大小选择,以便用户在 returns 到视图时看到相同的行数。
但我从文档中看到的是有一个可以捕获的 page
事件,但它不会给我当前选择的页面大小。我得到的最接近的是获取事件的源(DataTable)并获取行属性,但它仅包含行数 before 应用新值。
在 SO 上,我发现 a solution here,但在我看来这不是实现它的最佳方式,必须使用一些内联 JQuery 东西。
在我看来,在会话中保留页面大小选择是一个不那么奇特的功能,所以我想一定有一个好的解决方案吧?
正如您已经注意到的,事件在选定的行数应用于table之前被触发。目前,在 更改行数后 没有触发任何事件。
但是,有一个可能的解决方法:
- 将您的数据table绑定到支持 bean
- 在没有任何侦听器的情况下使用 AJAX
page
-事件。相反,在 ajax 请求完成后调用<p:remoteCommand>
。 - 将您的 actionListener 方法添加到
<p:remoteCommand>
。 - 在此方法中,检查数据table的行数。这是新值。
- 请记住,
page
事件不仅会在更改行数时触发,还会在页面更改时触发。
示例:
XHTML/JSF
<h:form>
<p:remoteCommand name="pageChanged" actionListener="#{tableBean.onPageChanged}"/>
<p:dataTable binding="#{tableBean.table}" paginator="true" rowsPerPageTemplate="5,10,20" rows="5">
<p:ajax event="page" process="@none" oncomplete="pageChanged()" />
<!-- columns here -->
</p:dataTable>
</h:form>
TableBean.java
private DataTable table;
public void onPageChanged(){
int numRows = table.getRows();
// ...
}
//getter/setter for table