@DBFlute, Java, C# 新しい話題ではないですが、知らない人も多いと思うので紹介します。 DBFluteのページング機能には、ページング検索の結果から ページングナビゲーション要素を導出することが可能です。 もし総ページ数が膨大な場合に、画面にて全てのページ番号のLinkを 表示するのはあまり格好良くありません。 [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29...] それはやはり、ある規則でリンクの表示を絞る方が自然です。 (例えばGoogleの検索結果のページのリンクを思い出してみて下さい) DBFluteはその規則を三種類(2+1)提供しています。 プロジェクトの要件にぴったり合う場合はぜひこれを使って下さい。 プロジェクトの要件でこの辺の話がそもそも曖昧な場合は、 これらを参考にして選択するというのも良いでしょう。
{PageRange} 前後nページだけを表示する。 ex) 総ページ数が「22」の場合で、前後「5」ページを表示 [4]Page目を選択 - [1 2 3 '4' 5 6 7 8 9 次へ] [13]Page目を選択 - [前へ 8 9 10 11 12 '13' 14 15 16 17 18 次へ] [21]Page目を選択 - [前へ 16 17 18 19 20 '21' 22]
{PageRange-fillLimit} 前後nページだけを表示するが、固定数表示とする。 端の方のページが選択されている場合で表示していないページ数の分、反対側のページを表示する。 デザインが崩れにくいという特徴あり。 ex) 総ページ数が「22」の場合で、前後「5」ページを表示で固定数表示 [4]Page目を選択 - [1 2 3 '4' 5 6 7 8 9 10 11 次へ] [13]Page目を選択 - [前へ 8 9 10 11 12 '13' 14 15 16 17 18 次へ] [21]Page目を選択 - [前へ 12 13 14 15 16 17 18 19 20 '21' 22]
{PageGroup} まとまったページ数で一つグループとみなして表示する。 そのグループ内のどのページが選択されても表示は変わらない。 ex) 総ページ数が「22」の場合で、「10」ページで一つのグループ [4]Page目を選択 - [1 2 3 '4' 5 6 7 8 9 10 11 次へ] [13]Page目を選択 - [前へ 11 12 '13' 14 15 16 17 18 19 20 次へ] [21]Page目を選択 - [前へ '21' 22]
どちらかというとPageRangeが一般的かなと思います。 実際にそれで実装されたシステムは多くあります。 デザイン性をもう少し大事にする場合は、それにfillLimitを 追加して、固定数表示にするようにします。 実装の仕方は、BehaviorPlatinumTestをご覧下さい。 selectPage()メソッドの戻り値であるPagingResultBeanクラスに対して 色々なんかするといい感じで導出することができます。 ちなみにこの機能は随分古くからあります。 (DBFluteがDBFluteという名前を付けられる前から) # # プロジェクトの要件がこれ以外の規則であるという方は、 # 参考までに教えて頂けるとありがたいです。 # 他にどういうのがあるのか興味があります。 #