1

Bean を使用して入力された dataTable があります。最初の 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.

pageNumber int 値を更新するメソッドを呼び出す Next というラベルの付いた commandButton があります。しかし、このボタンをクリックしても何も起こりません。デバッグでも実行しましたが、メソッドが呼び出されないようです。

<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 でやり直すと言われています)。一度に 15 行しか表示しないのに対し、150 行、200 行、または 4000 行すべてを表示します。

4

0 に答える 0