[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
ソースコードも減るし、いい事ずくめでしたとさ。わーい。