0

我一直JSF 1.2在我的应用程序中使用。我的大部分应用程序页面由h:datatable. 我遇到了这篇精彩的文章,它解释了有关数据表的所有内容。HtmlDataTable如上面的文章所示,我通过将我的表绑定到并使用会话范围的 bean来实现数据表分页。

现在我正在转向JSF 2.0版本。我想将我的sessionscopedbean转换为,viewscoped因为我的大多数应用程序页面都是相互独立的。

我遇到了这篇解释Viewscoped豆子的文章。它告诉我们不能使用binding数据表的属性。它还使用Datamodel.

我现在对如何使用Datamodeland viewscopedbean 实现数据表分页感到震惊。

我有以下分页方法

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}" />

请帮忙。

4

2 回答 2

1

dataTable.setFirst(...)将and替换dataTable.getRows()private int firstandprivate int rows绑定为的属性

<h:dataTable ... first="#{bean.first}" rows="#{bean.rows}">
于 2012-10-07T01:02:16.307 回答
0

我认为,您应该使用primefaces 数据表,它们有一个非常好的开箱即用数据表,其中包含许多特性,包括延迟加载,或者您可以使用richfaces或任何其他组件套件。当然,您可以构建您的 onw jsf 分页,但我认为您将花费大量时间构建一些已经完成的东西。

于 2012-10-06T13:26:07.740 回答