エルコムウォーク 田中
tanak****@elcom*****
2010年 8月 10日 (火) 14:16:01 JST
田中です。 解決したのでご報告致します。 bookVOのnaiyouShubetsuにはSelectMenuItem(idとnameを変数に持つ)をセットしているのですが、この際 RadioChoiceHelper というクラスを作り、 ・ラジオボタンの項目のリストを取得する。 ・DBより取得したidから検索してSelectMenuItemを返す。 といった事をおこなわせていました。 このRadioChoiceHelper のインスタンスを必要なときに作成して使っていたのですが、これが問題だったようです。 このRadioChoiceHelper クラスにシングルトンパターンを適用したら正常に動くようになりました。 はっきりと原因が解った訳ではないのですが、一応解決したのでご連絡致します。 > 田中です。 > > RadioGroupを使ったラジオボタンの作り方が良く分からなかったので投稿しました。 > > RadioGroupのコンポーネントにPropertyModelでbookVOの『naiyouShubetsu』という項目と結びつけています。 > > 登録処理の時は、フォーム画面からの入力(ラジオボタン選択)がbookVOの『naiyouShubetsu』にセットされDBに登録されたのですが、更新処理で、DBから値を取ってきて、bookVOにセットしても、ラジオボタンがその値に設定されません。 > > 下の[※]のところで、 > bookVO.setNaiyouShubetsu(nakyoushubetsuMenu.getItem(bookVO.getNaiyouShubetsu())); > > などと設定しなおす一行を入れると、ラジオボタンに設定されて画面表示されます。 > > RadioChoiceを使った場合はこのようなことをしなくてもラジオボタンに設定されたのですが、RadioGroupを使う場合はこのように設定しなおすものなのでしょうか? > > (最初、RadioChoiceを使ってやっていたのですが、ラジオボタンとラベルのレイアウトがどうしてもくずれてしまうのでRadioGroupを使うことにしました。) > > > > ------ HTML -------- > <span wicket:id="widRadioGroup_naiyouShubetsu"> > <span wicket:id="widRadio_naiyouShubetsuListView"> > <input type="radio" name="NAIYOU_SHUBETSU" wicket:id="widRadioItem_radio"> > <span wicket:id="widRadioItem_label"></span> > </span> > </span> > ------------------------- > > ------ Java -------- > RadioChoiceHelper naiyouShubetsuModeRadio = new > RadioChoiceHelper("naiyouShubetsuModeRadio"); > > RadioGroup widRadioGroup_naiyouShubetsu = new > RadioGroup("widRadioGroup_naiyouShubetsu", new PropertyModel(bookVO, > "naiyouShubetsu")); > widForm_form.add(widRadioGroup_naiyouShubetsu); > ListView widRadio_naiyouShubetsuListView = new > ListView("widRadio_naiyouShubetsuListView", > naiyouShubetsuModeRadio.getSelectMenu()) { > @Override > protected void populateItem(ListItem item) { > // TODO 自動生成されたメソッド・スタブ > item.add(new Radio("widRadioItem_radio", item.getModel())); > item.add(new Label("widRadioItem_label", > item.getModelObject().toString())); > } > }; > > [※] > > widRadioGroup_naiyouShubetsu.add(widRadio_naiyouShubetsuListView); > ------------------------- >