ラジオボタン

メモするほどの価値があるかはわからないけれど。。。ラジオボタンを使うときのサンプル

HTMLテンプレート

	<body jwcid="@Body">
        
        <span jwcid="@Form">
	        <span jwcid="@RadioGroup" selected='ognl:orderSize'>
	        <span jwcid="@Radio" value='ognl:o1' />
                <span jwcid="@Insert" value='ognl:o1' />
	        <span jwcid="@Radio" value='ognl:o2' />
                <span jwcid="@Insert" value='ognl:o2' />
	        <span jwcid="@Radio" value='ognl:o3' />
                <span jwcid="@Insert" value='ognl:o3' />
                <br />
                Select : <span jwcid="@Insert" value='ognl:orderSize' />
                <br />
                <br />
        </span>
        <span jwcid="@Submit" />
        </span>
	</body>
ページ仕様

    <property-specification name="orderSize" type="java.lang.String" 
    	initial-value="null"/>
    
    <property-specification name="o1" type="java.lang.String" 
    	initial-value="&quot;100&quot;"/>
    
    <property-specification name="o2" type="java.lang.String" 
    	initial-value="&quot;200&quot;"/>
    
    <property-specification name="o3" type="java.lang.String" 
    	initial-value="&quot;300&quot;"/>

orderSizeのinitial-valueによってデフォルトの選択肢を選ぶことができる(この場合はNULLなのでどれにもチェックされない)
ただこの場合はString型なので関係ないが、その他のオブジェクトのメンバー変数を参照するときに、初期値をNULLにしたまま画面に表示させようとすると、NULLの参照のメンバーにアクセスするので、例外が起きる。
ページ仕様にプロパティとして定義してたり、OGNL式でインスタンスを取得できるようなら、それを書き込めば良いが、Foreachコンポーネントなど動的に値を取得してRadioボタンを作ってるときはそういうことができない。
とりあえずの回避方法は、ダミーのインスタンスを生成しておく
initial-value="new hoge.foo.someObject()"
もっと良い方法があるかも

Home.java

    public abstract String getO1();
    public abstract void setO1(String count);

    public abstract String getO2();
    public abstract void setO2(String count);

    public abstract String getO3();
    public abstract void setO3(String count);

必要なものはテンプレートとページ仕様に書いてるので記述量はすくない。必要であれば必要なだけのロジックを書くだけでことが足りる。
これもTapestryの利点ですかねー。

以上、http://jakarta.apache.org/tapestry/doc/ComponentReference/index.htmlを見ればわかることですが…^^;;;