- ベストアンサー
ページング処理について
- ArrayListを使った一覧表示にページング処理を追加したい。DBの内容を10件ごとに表示し、BackとNextのリンクで画面を移動する。次に表示する10件がない場合はリンクを非表示にしたい。
- Servletでボタンがクリックされたら、list.jspに遷移してデータを10件ずつ表示する。セッションに情報を保持する。
- list.jspでは、セッションからデータを取得してテーブルに表示する。変数iを使って5件まで表示し、BackとNextのボタンを追加する。しかし、次に表示すると同じ情報が保持されたままになってしまう。前後の情報を格納する方法についてアドバイスを求めている。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo. 1です。 >NextもBackも表示されなくなってしまいました。 失礼、比較演算子が間違えていました。 これで正しく動くと思います。 大変失礼しました。 f(0 < page){ // Backを表示 } if((page+1)*10 <= array.size()){ // Nextを表示 } ちなみに、補足で書かれたコードはNextとBackが逆になっている(間違えている)のでご注意ください。
その他の回答 (1)
- shiren2
- ベストアンサー率47% (139/295)
JSPは専門外ですが…。 arrayに全データが保持されているとして、forでi=0から毎度やり直せば、先には進まないのではと思います(0 .. 4までを毎回繰り返す)。 下記のような流れになると思います。 String str = request.getParameter("list"); int page = (str != null ? Integer.parseInt(str) : 0); for(int i=page*10; i<array.size() ; i++){ ... >(2)次(もしくは前)に表示する10件がない場合 if(0 < page){ // Backを表示 } if(array.size() < page*10){ // Nextを表示 } 見当違いなら申し訳ありません。
補足
アドバイス有難うございました! ご意見を参考に以下のソースに作り替えてみました。 **JSP** (先日のif文の下に作成しました) <% String str = request.getParameter("list"); int paging = (str != null ? Integer.parseInt(str) : 0); for(int i=paging*10; i<array.size() ; i++){ Bean bean2 = (Bean)array.get(i); %> <%if(0 < paging){ %> <a href="/webapp/control?list=1"> <b>NEXT</b></font></a> <%} %> <%if(array.size() < paging*10){ %> <a href="/webapp/control?list=6"> <b>BACK</b></font></a> <%}%> <%} %> </BODY> **Servlet** public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ try{ request.setCharacterEncoding("Windows-31J"); String list = request.getParameter("list"); しかし、実行してみると先頭の10件のみが表示され、NextもBackも表示されなくなってしまいました。 (実際にはDB内には12件入っております。) デバッグで値を確認してみたところ、Paging内が0のままになってしまっているようです。 申し訳ありませんが、ご教授お願いいたします。
お礼
逆になってますね。 申し訳ありません、自分の記述ミスです・・・。 shiren2さんのアドバイスを元にあれから試行錯誤した結果、 無事にページング処理が出来るようになりました! 本当に有難うございました。 何かありましたら、また宜しくお願い致します。