我也遇到了这个问题,并且我开发了一种可能有用的编码模式。它并不是一个真正的PrimeFaces(我正在使用它) - 更多使用JSF 2使用书签链接的技术。
在标记中,我包含页面的所有参数,如下所示:
<f:metadata>
<f:viewParam name="orderID" value="#{bean.orderID}" />
<f:viewParam name="sortMode" value="#{bean.sortMode}" />
<f:viewParam name="firstRecord" value="#{bean.firstRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
</f:metadata>
这些值中的每一个都在backing bean中支持,因此如果它们未设置,它们将生成一个合适的默认值。例如:
现在你实现用户控制,以改变这些值,并且它们每一个被改变的时间重新生成的表:
public int getPageSize() {
if (pageSize < MIN_PAGE_SIZE) pageSize = DEF_PAGE_SIZE;
if (pageSize > MAX_PAGE_SIZE) pageSize = DEF_PAGE_SIZE;
return pageSize;
}
甲连结此视图可如下生成。你应该仍然使用AJAX为 - 例如:
<p:spinner value=#{bean.pageSize} >
<p:ajax update="tableID" />
</p:spinner>
在setter方法,你必须触发重新生成的表,但是这是它的要点。我希望这有帮助。
UPDATE:
为了处理分页,你只需要添加的第一页,前一页,下页,等等链接的链接将是这个样子:
<h:link value="First Page" outcome="thisPage">
<f:param name="orderID" value="#{bean.orderID}" />
<f:param name="sortMode" value="#{bean.sortMode}" />
<f:param name="firstRecord" value="0" />
<f:param name="pageSize" value="#{bean.pageSize}" />
</h:link>
<h:link value="Next Page" outcome="thisPage">
<f:param name="orderID" value="#{bean.orderID}" />
<f:param name="sortMode" value="#{bean.sortMode}" />
<f:param name="firstRecord" value="#{bean.nextRecord}" />
<f:param name="pageSize" value="#{bean.pageSize}" />
</h:link>
等你需要在后台bean中实现属性来计算参数应该是什么。
thx,是有页和排序参数视图params是我比ajax更喜欢。但我的问题是更多关于如何处理分页和使用这种方法使用primefaces中的数据加载数据进行排序。 – fischermatte 2012-03-18 20:48:50
@fischermatte查看更新。 – AlanObject 2012-03-18 23:24:42
仍然 - 你如何告知primefaces数据表中的paginator和排序按钮,他们不应该执行ajax请求,而是用这些参数调用新的页面请求?我看到的唯一解决方案就是用这样的排序和分页编写自己的数据表组件。但如果我是第一个遇到这个问题的人,我真的很好奇。从我的角度来看,这是应该由组件框架处理的功能。 – fischermatte 2012-03-19 08:24:43