CheckBoxMultipleChoiceとChoiceRendererを使用したチェックボックスの比較
早速あげあげ。基本はいただいたコメントのソースのまま、項目のBeanなんかは自分が作っていたもの+Wicket1.3仕様にあわせて……。
private List<SampleObjectModelBean> selected; public SampleChoiceRenderer() { // 自分が取得している項目 selected = new ArrayList<SampleObjectModelBean>(); selected.add(GenerateBeanUtility.GenerateSampleObjectModelBean(2)); selected.add(GenerateBeanUtility.GenerateSampleObjectModelBean(5)); Form form = new Form("form"); add(form); // 選択項目全て final List<SampleObjectModelBean> all = GenerateBeanUtility.GenerateSampleObjectModelBean(); // チェックボックス final CheckBoxMultipleChoice multiChoice = new CheckBoxMultipleChoice("list", new PropertyModel(this, "selected"), all, new ChoiceRenderer("name", "outline")); // 表示用ラベル final Label label = new Label("label", "最初"); form.add(multiChoice); form.add(new Button("next") { private static final long serialVersionUID = -1359417135623629179L; // 選択したものを連結してLabelにセット @Override public void onSubmit() { List<SampleObjectModelBean> list = (List<SampleObjectModelBean>)multiChoice.getModelObject(); String value = ""; for (SampleObjectModelBean bean : list) { value += bean.getOutline() + ", "; } label.setModelObject(value); } }); this.add(label); }
こんな感じにさせてもらいました。ちょっと前回のCheckGroupとCheckのゴリ押しより長く見えるけど、チェック以外のコンポーネントも入っているからで、肝は、
// チェックボックス final CheckBoxMultipleChoice multiChoice = new CheckBoxMultipleChoice("list", new PropertyModel(this, "selected"), all, new ChoiceRenderer("name", "outline"));
ここだけ。あと、
selected.add(GenerateBeanUtility.GenerateSampleObjectModelBean(2)); selected.add(GenerateBeanUtility.GenerateSampleObjectModelBean(5));
ここで、みかんとなしをユーザが取得しているものにaddしています。そして、
final List<SampleObjectModelBean> all = GenerateBeanUtility.GenerateSampleObjectModelBean();
こっちで項目全てを取得しています。で、htmlはこう。
<h1>ChoiceRendererを使用したチェックボックス</h1> <p>by id:hayasshさん</p> <form wicket:id="form"> <input type="submit" wicket:id="next" /> <table cellspacing="0" cellpadding="2" border="1"> <tr> <th>なんとか一覧</th> </tr> <tr> <td><span wicket:id="list" /></td> </tr> </table> </form> <p wicket:id="label" />
すると、何とチェックが! →http://samplewicket.kkataka.staxapps.net/?wicket:bookmarkablePage=:sampleWicket.view.choiceRenderer.SampleChoiceRenderer
ソースコードも減るし、いい事ずくめでしたとさ。わーい。