CheckBoxMultipleChoiceとChoiceRendererを使用したチェックボックスの比較

[Java][Wicket]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

 ソースコードも減るし、いい事ずくめでしたとさ。わーい。