いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Tapestry奮闘記-0006 (InsertTextコンポーネント)

InsertTextコンポーネントは、改行付きの文字列を出力します。

[ページ仕様ファイル]

<page-specification class="gsf.samples.tapestry.Home">
    <!--
        InsertTextコンポーネント

        改行付きの文字列の出力を担当する。

        なお、文字列に改行コードが含まれている場合、
        出力時には<br/>に置換されて出力される。

        また、Insert, InsertTextコンポーネントに共通しているが、
        <>&等のHTMLにおいてエスケープが必要な文字についても
        出力時にエスケープして出力される。
    -->
    <component id="insertText003" type="InsertText">
        <binding name="value">ognl:largeStrings</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">
        <!--
            改行付きの文字列を出力する。
            (InsertTextコンポーネントを使用)
        -->
        <br/>
        <hr/>
        <div id="insert_text_003" align="center">
            <b>
            InsertTextコンポーネントを使用して、改行付き文字列を出力
            <br/>
            表示元の値はページコンポーネントクラスから取得
            </b>
            <br/>
            出力された文字列: <span jwcid="insertText003"></span>
        </div>
        <hr/>
        <br/>
    </body>
</html>

表示を表示すると以下のように出力されます。

出力された文字列: 改行付きの文字列<>&''[0]
改行付きの文字列<>&''[1]
改行付きの文字列<>&''[2]