我有一个使用我的 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 行。非常感谢任何帮助,因为我知道它只是我在前端数据表中缺少的一些简单的东西。