Insertコンポーネントは、表示の際のフォーマッターを指定できるように
なっています。
[ページ仕様ファイル]
<page-specification class="gsf.samples.tapestry.Home"> <!-- Insertコンポーネント 単純な文字列の出力を担当する。 こちらは、表示元の値をページコンポーネントクラスより 取得する。 --> <component id="insertText002" type="Insert"> <!-- value属性の値が出力される ここでは、ognlを使用して現在日時を出力するよう指定し、 さらに、format属性を指定して出力フォーマットを定めている。 --> <binding name="value">ognl:currentDate</binding> <binding name="format">ognl:dateFormat</binding> </component> </page-specification>
今回、ページコンポーネントクラスより、値を取得するように
設定しています。
[ページコンポーネントクラス]
// vim:set ts=4 sw=4 et ws ft=java fenc=cp932 ff=dos: package gsf.samples.tapestry; import java.util.*; import java.text.*; import org.apache.tapestry.html.*; /** * Homeページ用のページコンポーネントクラス.<br/> * <br/> * ページコンポーネントクラスは、org.apache.tapestry.html.BasePage<br/> * クラスを継承して、作成する。tapestryには、バイトコードを実行時に<br/> * 拡張するフレームワークが存在するので、ページコンポーネントクラスは<br/> * abstractで宣言してもよい。その際は、セッターゲッターをabstractで<br/> * 宣言すると実行時にtapestry側で実装を拡張してくれる。<br/> * * <pre> * (クラス宣言例) * public abstract class Home extends BasePage{ * } * * (メソッド宣言例) * public abstract String getName(); * public abstract void setName(String name); * </pre> */ public class Home extends BasePage{ private Date currentDate; private Format dateFormat; private String largeStrings; public Home(){ this.currentDate = new Date(); this.dateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); this.largeStrings = "改行付きの文字列<>&''[0]\n改行付きの文字列<>&''[1]\n改行付きの文字列<>&''[2]\n"; } /** * Get currentDate. * * @return currentDate as Date. */ public Date getCurrentDate(){ return this.currentDate; } /** * Get dateFormat. * * @return dateFormat as Format. */ public Format getDateFormat(){ return this.dateFormat; } /** * Get largeStrings. * * @return largeStrings as String. */ public String getLargeStrings(){ return this.largeStrings; } }
[テンプレートファイル]
<html jwcid="@Shell"> <body jwcid="@Body"> <!-- ラベルとして、普通に文字列を出力する。 (Insertコンポーネントを使用し、 表示元の値をページコンポーネントクラスからの 値とする) --> <br/> <hr/> <div id="insert_text_002" align="center"> <b> Insertコンポーネントを使用して、文字列を出力 <br/> 表示元の値はページコンポーネントクラスから取得 </b> <br/> 出力された文字列: <span jwcid="insertText002"></span> </div> <hr/> <br/> </body> </html>
表示を表示すると以下のように出力されます。
出力された文字列: 現在日付(yyyy/MM/dd hh:mm:ss形式)