ラジオボタン
メモするほどの価値があるかはわからないけれど。。。ラジオボタンを使うときのサンプル
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>
- Radioコンポーネントの値を画面に出力させようと思ったら、別途Insertコンポーネントを使わなければいけない
- RadioコンポーネントはRadioGroupコンポーネントの中に入ってなければいけない
- RadioGroupコンポーネントはFormコンポーネントの中に入ってなければいけない
- FormコンポーネントはBodyコンポーネントの中に入ってなければいけない
ページ仕様 <property-specification name="orderSize" type="java.lang.String" initial-value="null"/> <property-specification name="o1" type="java.lang.String" initial-value=""100""/> <property-specification name="o2" type="java.lang.String" initial-value=""200""/> <property-specification name="o3" type="java.lang.String" initial-value=""300""/>
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を見ればわかることですが…^^;;;