及び、このポートレットでソート、ページングができる表の作り方を書いておく。
参考情報:
External Paging and Sorting
Displaytag library in your portlet
通常、コノ手の表はJSFベースでナントカFaces使って片付けるんでしょうね。
でも、今回は個人的な方針の都合でSpringベースだから、Displaytagを使う。
- Displaytagポートレットを作る
まず、通常のセットアップとして、Displaytagのライブラリを、アプリケーションのWEB-INF/libに入れる。
参考情報:Installation Guide
次に、クラスパスにdisplaytag.propertiesファイルを追加する。
displaytag.propertiesファイルに、この一文を書き込む。
factory.requestHelper=org.displaytag.portlet.PortletRequestHelperFactory
参考情報:JSR-168 Portlet Support
これで、ポートレットにDisplaytag表を追加して、ソートやページングさせる準備が整う。
実は、このファイルが無くても、Displaytag表は表示できる。
が、ソートやページングができない。
- ソート、ページングができる表を作る
ソートやページングができる表を作るには、二つ方法があるらしい。
Valuelistパターンを使う方法と使わない方法。
今回はValuelistパターンを使う方法を採用した。
この方法だとorg.displaytag.pagination.PaginatedListインタフェイスの実装が必要。
で、探したところ幾つか見つけて、コレはその中の一つ。
Displaytag library in your portlet
具体的に、どう使うかって言うと…
まず、Springのコントローラから渡すモデルMapに、このPaginatedList実装をプットする。
次に、JSP側で、Displaytag表で表示するデータに、このPaginatedList実装を指定する。Map model = new HashMap(); // 表示するデータのリストを取得する List list = this.logpageDao.readLogmessages(filePath,log4jPattern); // displaytagでソート、ページングできるリストへ変換 PaginatedListImpl list2 = new PaginatedListImpl(request); list2.setList(list); model.put("list", list);
「pagesize="20"」で1ページに20レコードを指定。<portlet:renderURL var="viewListURL" /> <display:table name="list" sort="external" defaultsort="1" requestURI="${viewListURL}" pagesize="20" id="element" > <display:column property="lineNumber" title="LN" sortable="true" sortName="lineNumber" /> <display:column property="data" title="DT" /> </display:table>
0 件のコメント:
コメントを投稿