【发布时间】:2012-09-27 09:47:35
【问题描述】:
我一直在我的应用程序中使用JSF 1.2。我的大部分申请页面都包含h:datatable。我遇到了this 精彩的文章,它解释了有关数据表的一切。如上篇文章所示,我通过将我的表绑定到HtmlDataTable 并使用会话范围的bean 来实现数据表分页。
现在我正在转向JSF 2.0 版本。我想将我的 sessionscoped bean 转换为 viewscoped,因为我的大多数应用程序页面都是相互独立的。
我遇到了this 文章,其中解释了Viewscoped bean。它告诉我们不能使用数据表的binding 属性。它还使用Datamodel。
我现在对如何使用 Datamodel 和 viewscoped bean 实现数据表分页感到震惊。
我有以下分页方法
public String pageFirst() {
dataTable.setFirst(0);
return "";
}
public String pagePrevious() {
dataTable.setFirst(dataTable.getFirst() - dataTable.getRows());
return "";
}
public String pageNext() {
dataTable.setFirst(dataTable.getFirst() + dataTable.getRows());
return "";
}
public String pageLast() {
try {
int count = dataTable.getRowCount();
int rows = dataTable.getRows();
LOGGER.info("rowcount:" + count);
LOGGER.info("rows:" + rows);
dataTable.setFirst(count - ((count % rows != 0) ? count % rows : rows));
}catch(ArithmeticException e){
LOGGER.info("no rows to display: ",e);
}
return "";
}
在视图中我是这样使用它们的
<h:commandButton value="#{msgs.footerbutton1}"
action="#{bean.pageFirst}"
disabled="#{bean.dataTable.first == 0}" />
<h:commandButton value="#{msgs.footerbutton2}"
action="#{bean.pagePrevious}"
disabled="#{bean.dataTable.first == 0}" />
<h:commandButton value="#{msgs.footerbutton3}"
action="#{bean.pageNext}"
disabled="#{bean.dataTable.first + bean.dataTable.rows
>= bean.dataTable.rowCount}" />
<h:commandButton value="#{msgs.footerbutton4}"
action="#{bean.pageLast}"
disabled="#{bean.dataTable.first + bean.dataTable.rows
>= bean.dataTable.rowCount}" />
请帮忙。
【问题讨论】:
标签: jsf jsf-2 datatable pagination