DataTableマルチ選択の実装

1208 ワード

DataTableの複数選択は、各行の前にHtmlSelectBooleanCheckboxを追加することによって、ユーザーの選択イベントを受信します.ユーザが選択するたびに、非同期呼び出しが開始され、バックグラウンドのajaxSelect関数にコミットされます.関数は、AjaxBehaviorEventイベントによって現在のselect状態を取得します.selectがtrueの場合、HtmlSelectBooleanCheckboxの行が表すデータをリストに追加します.このselectがfalseである場合、このローが表すデータを取得し、削除します.
UIの書き方とバックグラウンド関数の書き方を説明します.

      :
    public void ajaxSelect(AjaxBehaviorEvent event){
           HtmlSelectBooleanCheckbox b = (HtmlSelectBooleanCheckbox)event.getComponent();
//    
   System.out.println(b.isSelected());
              int index=htmlDataTable.getRowIndex();
         User selectedUser=(User)htmlDataTable.getRowData();
 //         
         System.out.println("you choose ajax"+index+" record ,and User is"+selectedUser.getName()+":::"+selectedUser.getUser());
         selected.add(selectedUser);
    }

       :
        <h:selectBooleanCheckbox >
                <f:ajax listener="#{testPaginate.ajaxSelect}" execute="@this"></f:ajax>
            </h:selectBooleanCheckbox>

完全なコードはJSF DataTableページの例を参照してください.