ページング処理はWebアプリケーションの開発でよく使う。なんかいい方法ないかと思ったが、毎回データ取得処理を走らすのもなんなので、Taglibでなんとかならないかやってみた。
ページ番号を出力するページングタグリブと、データを表示するページジングイテレータタグリブを作る。
仕様
- データは取得されていてタグリブではそれらを元にページングの表示を行う
- 引数は不正な値が与えられてもデフォルト値に置き換えて対応する
- 表示するデータは配列かCollectionとする。Iteratorも考えたが最大サイズがわからないのでこうなった
ページングタグリブ
- 引数now・・・現在のページ番号
- 引数value・・・表示するデータを引数に与える
- 戻り値no・・・ページ番号
- 戻り値isNow・・・現在のページの場合はtrueを返す
ページングイテレータタグリブ
- 引数now・・・現在のページ番号
- 引数element・・・表示データから取り出したデータの名前を定義
- 引数value・・・表示するデータを引数に与える
- 引数type・・・elementで指定した名前のオブジェクトの型を指定
- 戻り値取り出したデータ・・・elementで指定した名前でデータを返す
作るもの
- PagingIterateTag
- PagingIterateTei
- PagingTag
- PagingTei
- daipresents-taglib.tld
- PagingTagTest.jsp
ダウンロード
使い方
ページングタグリブ
<dai:paging now="<%=now%>" value="<%=userList%>"> <s:if test="${isNow}">${no}</s:if> <s:else> <a href="<%=request.getContextPath() %>/PagingTagTest.jsp?dataNum=<%=num%>&nowNo=${no}">${no}</a> </s:else> </dai:paging>
「<%=」で引数を与えることができるが、これを使わない場合は、全スコープから変数を検索する。
ページングイテレータタグリブ
<dai:pagingiterate element="user" value="<%=userList%>" type="com.daipresents.struts209.vo.UserVO" now="<%=now%>"> ${user.userName}<br /> </dai:pagingiterate>