いろいろ備忘録日記

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

Tapestry奮闘記-0010 (Checkbox, If, Elseコンポーネント)

Checkboxコンポーネントは、checkboxの作成、If,Elseコンポーネント
指定された値に応じて分岐処理を行うコンポーネントです。

今回は、ページ仕様ファイルに定義するのではなく、直接HTML側に
コンポーネント定義を行っています。

[HTMLテンプレート]

        <span jwcid="$content$">
            <span jwcid="@Shell" title="literal:2つ目のサンプル画面">
                <span jwcid="@Body">
                    <!--
                        チェックボックスを表示する。
                        (Checkbox,If,Elseコンポーネントを使用。)

                        Checkboxコンポーネント
                            必要な属性値は、valueとなっておりbooleanの値を指定する.

                        Ifコンポーネント
                            必要な属性値は、conditionとなっておりbooleanの値を指定する。

                        Elseコンポーネント
                            必要な属性値は無く、直前のIfの結果がfalseの場合に評価される。

                        なお、今回はHTML側にて直接コンポーネント定義を行っているが
                        当然、pageファイルでも同じことができる。
                    -->
                    <br/>
                    <hr/>
                    <!--
                        下記のform001@Formのようにjwcidにてコンポーネント名の前に
                        @をつけて記述すると、テンプレートが表示された際に@よりも
                        前の部分がそのタグのname属性に指定されるようになる。
                    -->
                    <form jwcid="form001@Form" name="form_001" method="post" action="" id="form001">
                        <div id="checkbox_001" align="center">
                            <b>Checkbox,If,Elseコンポーネントを使用</b>
                            <br/>
                            出力: 
                            <input jwcid="checkbox001@Checkbox" value="ognl:checkbox001" type="checkbox" name="checkbox_001" onchange="javascript: document.getElementById('form001').submit();"/>
                            チェックボックス001<br/>
                            チェックボックスの状態:
                            <font color="red" size="+2">
                                <span jwcid="@If" condition="ognl:checkbox001">ON</span>
                                <span jwcid="@Else">OFF</span>
                            </font>
                            <br/>
                        </div>
                    </form>
                    <hr/>
                    <br/>
                </span>
            </span>
        </span>

[ページ仕様ファイル]

<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE page-specification
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">

<page-specification class="gsf.samples.tapestry.ThirdSample">
</page-specification>

[ページコンポーネントクラス]

package gsf.samples.tapestry;

import org.apache.tapestry.*;
import org.apache.tapestry.html.*;

public abstract class ThirdSample extends BasePage{

    public abstract boolean getCheckbox001();
    public abstract void setCheckbox001(boolean value);

}