WebWork Revolutions!

MLより。今宵、beta2のリリース計画が立てられるそうです。

From: "Patrick Lightbody"
Subject: RE: [OS-webwork] WW2 RC?

We're planning on release beta 2 (which will be the RC) tonight. Thanks
to everyone for all their help!

[WebWork2]カスタムUIコンポーネントはすごい!

WebWork2 + Hibernate + Velocity + SiteMeshという組み合わせで、
バグ管理アプリ「Tapirus」を作っています。
そのバグやユーザの一覧のページング機能([前へ] 1 2 3 4.. [次へ]のようなページめくりのことです)を
WebWork2のカスタムUIコンポーネントで作ってみました。
カスタムUIコンポーネント、素晴らしいです。
本当に、再利用性のあるUI部品が簡単に作れます。

ソースの抜粋はこちらです。(Velocityバージョンです)

カスタムUIコンポーネントの呼び出し元(ListIssue.vm)


#bodytag( Component "template=paging.vm" "value=paging")
#param( "url" "'ListIssue.jspa'" )
#param( "prefix" "'paging.'" )
#end
カスタムUIコンポーネント(paging.vm)

#set ( $page = $tag.ActualValue )
#set ( $url = $tag.Params.get('url') )
#set ( $prefix = $tag.Params.get('prefix') )

#if($page.total > 0)
#if( $page.hasPrev() )
<a href="$!{url}?${prefix}offset=$page.prev">
[$action.getText('label.prev')]
</a>
#end
#foreach($item in [1..$page.pageCount])
#if( $item != $page.page)
#set( $pos = ($item - 1) * $page.max)
<a href="$!{url}?${prefix}offset=$pos">
$item
</a>
 
#else
$item
 
#end
#end
#if( $page.hasNext() )
<a href="$!{url}?${prefix}offset=$page.next">
[$action.getText('label.next')]
</a>
#end
<br>
${page.page}/${page.pageCount}
(${page.first}-${page.last}/${page.total})
#else
$action.getText('label.notMatch')
#end

ちなみに、Actionクラスには

public Paging getPaging();

というゲッターメソッドがあります。