いろいろ備忘録日記

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

Tapestry奮闘記-0009 (Radio, RadioGroupコンポーネント)

Radio, RadioGroupコンポーネントは、文字通りラジオボタンを作成する
コンポーネントです。RadioGroupによって複数のラジオボタンがグループ化されます。

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

[HTMLテンプレート]

                    <!--
                    
                        ラジオボタンを表示する。
                        (Radio,RadioGroupコンポーネントを使用。)

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

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

                        Radioコンポーネントは、通常RadioGroupコンポーネントと一緒に使用する。
                        また、RadioGroupコンポーネントはFormコンポーネントの内部にないといけない。
                        グループ化されている場合、RadioGroupのselected属性で指定された値が
                        選択された状態となる。

                    -->
                    <br/>
                    <hr/>
                    <form jwcid="form002@Form" name="form_002" method="post" action="" id="form002">
                        <div id="radio_001" align="center">
                            <b>Radio, RadioGroupコンポーネントを使用</b>
                            <!--
                                ここでは、ページ仕様ファイルにてラジオグループの初期値を設定している。
                            -->
                            <br/>
                            出力: <br/>
                            <span jwcid="radioGroup001@RadioGroup" selected="ognl:radio001">
                                <input jwcid="@Radio" type="radio" name="radio_001" value="ognl:@gsf.samples.tapestry.ThirdSample@RADIO001" onchange="document.getElementById('form002').submit();"/>
                                ラジオボタン001<br/>
                                <input jwcid="@Radio" type="radio" name="radio_002" value="ognl:@gsf.samples.tapestry.ThirdSample@RADIO002" onchange="document.getElementById('form002').submit();"/>
                                ラジオボタン002<br/>
                                <input jwcid="@Radio" type="radio" name="radio_003" value="ognl:@gsf.samples.tapestry.ThirdSample@RADIO003" onchange="document.getElementById('form002').submit();"/>
                                ラジオボタン003<br/>
                            </span>
                            <br/>
                            選択状態:
                            <font color="red" size="+2">
                                <span jwcid="@Insert" value="ognl:radio001">選択された値を表示する</span>
                            </font>
                            <br/>
                        </div>
                    </form>
                    <hr/>
                    <br/>

[ページ仕様ファイル]

<?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">

    <property name="radio001" initial-value="ognl:@gsf.samples.tapestry.ThirdSample@RADIO001"/>
    
</page-specification>

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

package gsf.samples.tapestry;

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

public abstract class ThirdSample extends BasePage{

    public static final String RADIO001 = "radio button 1";
    public static final String RADIO002 = "radio button 2";
    public static final String RADIO003 = "radio button 3";

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

    public abstract String getRadio001();
    public abstract void setRadio001(String value);
}