[Seasar-user:13689] Re: [teeda] ページ番号を並べるタイプのページング

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 4月 11日 (金) 00:00:47 JST


小林 (koichik) です.

Date:    Thu, 10 Apr 2008 22:45:10 +0900
From:    "Mitsutaka Sato" <[E-MAIL ADDRESS DELETED]>
To:      seasar-user <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:13687] [teeda] ページ番号を並べるタイプのページング

> 前 1 2 3 4 5 次
> 
> というような形式で表示する方法ってありますでしょうか?

単に表示の話ということであれば,例えば

・HTML

<span id="isPrev">
  <a id="goPrev" href="xxx.html?page=1">前</a>
</span>
<div id="pageItems">
  <span id="isCurrent">
    <span id="page-2">1</span>
  </span>
  <span id="isNotCurrent">
    <a id="goXxx" href="xxx.html?page=1">
      <span id="page-1" te:omittag="true">1</span>
    </a>
  </span>
</div>
<span id="isNext">
  <a id="goNext" href="xxx.html?page=1">次</a>
</span>


・Page クラス

public int current;         //現在のページ番号
public Integer[] pageItems; //ページの情報
public int page;            //Teedaが繰り返しで設定
public int pageIndex;       //Teedaが繰り返しで設定

public String initialize() {
    current = page == 0 ? 1 : page;
    pageItems = new Integer[] { 1, 2, 3, 4, 5 };
    return null;
}
/** 「前」を表示する場合true */
public boolean isPrev() {
    page = current - 1;
    return page > 0;
}
/** 「次」を表示する場合true */
public boolean isNext() {
    page = current + 1;
    return page < pageItems.length + 1;
}
/** 現在のページ番号の場合true */
public boolean isCurrent() {
    return pageIndex + 1 == current;
}

みたいな感じで.
# メーラで書いただけで試してないので怪しいかもですが.

current は現在しているページ番号 (1〜),
pageItems の内容は 1 からのページ番号ということで.
# その他の情報が必要なら (たぶん必要でしょう) 
# Dto の配列または List にしてください.

isPrev()/isNext() で page を設定しているのが
少しトリッキーかも?

リンクをクリックするとパラメータの page が
Page クラスの page プロパティに設定されるので,
initialize() ではそれを current に設定してます.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内