1

我有一个使用我的 Bean 填充的数据表。我只想显示前 15 个结果,然后允许用户使用下一个按钮来显示接下来的 15 个结果。这是我的数据表

<h:dataTable id ="data" value="#{copd.getCopds()}" var="c"
            styleClass="order-table"
            headerClass="order-table-header"
            rowClasses="order-table-odd-row,order-table-even-row">

我的 CopdBean 有一个名为 pageNumber 的 int 值,它向下传递以与 CopdDaoImpl 一起使用以确定表的结果。这是后端的快速路径...

CopdBean.java

public List<Copd> getCopds(){
    return copdBo.findAllCopd(pageNumber);
}

copdBoImp.java

public List<Copd> findAllCopd(int pageNumber) {

    return copdDao.findAllCopd(pageNumber);
}

copdDaoImp.java

private static int pageSize = 15;

public List<Copd> findAllCopd(int pageNumber){
    Criteria crit = getSession().createCriteria(Copd.class);
    crit.add(Restrictions.like("copdPK.upi","0%"));
    crit.addOrder(Order.desc("copdPK.upi"));
    crit.setFirstResult(pageSize * (pageNumber -1));
    crit.setMaxResults(pageSize);
    return crit.list();
}

如您所见,当 pageNumber int 值更新时,copd.getCopds() 将显示下一个 15。当我硬编码并将 int 值更改为 2、3 或 4 并运行 webapp 时,一切都会显示正确性。我只需要更新此 pageNumber 值并刷新 dataTable 的按钮功能(也就是调用 copd.getCopds() 并将该结果作为“值”存储在 dataTable 中。

我有一个标记为 Next 的 commandButton,它将调用一个方法来更新我的 pageNumber int 值。但是当这个按钮被点击时,什么也没有发生。我什至在调试中运行过,似乎从未调用过该方法。

<h:commandButton value="Next" action="#{copd.nextPage()}"/>

copd.nextPage() 只是将 int 值增加 1。但是单击此按钮不会执行任何操作。我努力了

onclick="refreshTable()"

<script type="text/javascript">
        function refreshTable()
        {
            var table = document.getElementById("data");
            table.refresh();
        }
    </script>

我也试过<f:ajax render="data"/>

一切都适用于我的应用程序,我只是想基本上更新 dataTable 中的“值”,然后在不刷新整个页面的情况下刷新 dataTable(我被告知将使用新的 bean 重新开始),这样我m 一次只显示 15 行,而所有 150 或 200 或 4000 行。非常感谢任何帮助,因为我知道它只是我在前端数据表中缺少的一些简单的东西。

4

0 回答 0