チェックボックス、ラジオボタン、リスト
それでは、その他のフォーム関係のコンポーネントについても見てみましょう。よく用いられるものとして、チェックボックス、ラジオボタン、リストといったものを作成してみることにします。
package jp.allabout;
import java.io.Serializable;
import java.util.*;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.model.PropertyModel;
public class Page1 extends WebPage {
private FormModelBean bean;
public Page1() {
bean = new FormModelBean("テキストを入力してください。");
PropertyModel messageModel = new PropertyModel(bean, "msgStr");
PropertyModel checkModel = new PropertyModel(bean, "checkBool");
PropertyModel radioModel = new PropertyModel(bean, "radioStr");
PropertyModel listModel = new PropertyModel(bean, "listStr");
String[] arr = {"Eins","Zwei","Drei"};
List list = Arrays.asList(arr);
Form form = new Form("form");
Label label = new Label("message", messageModel);
this.add(label);
CheckBox check = new CheckBox("check",checkModel);
form.add(check);
RadioChoice radio = new RadioChoice("radio",radioModel,list);
form.add(radio);
ListChoice listchice = new ListChoice("list",listModel,list);
form.add(listchice);
FormButton button = new FormButton(this,"button");
form.add(button);
this.add(form);
}
public FormModelBean getBean() {
return bean;
}
public void setBean(FormModelBean bean) {
this.bean = bean;
}
}
class FormModelBean implements Serializable {
private String msgStr;
private boolean checkBool;
private String radioStr;
private String listStr;
FormModelBean(String msg){
this.msgStr = msg;
}
public String getMsgStr() {
return msgStr;
}
public void setMsgStr(String msgStr) {
this.msgStr = msgStr;
}
public boolean getCheckBool() {
return checkBool;
}
public void setCheckBool(boolean check) {
this.checkBool = check;
}
public String getRadioStr() {
return radioStr;
}
public void setRadioStr(String radioStr) {
this.radioStr = radioStr;
}
public String getListStr() {
return listStr;
}
public void setListStr(String listStr) {
this.listStr = listStr;
}
}
class FormButton extends Button {
private static final long serialVersionUID = 1L;
private Page1 page;
public FormButton(Page1 page, String s){
super(s);
this.page = page;
}
public void onSubmit() {
FormModelBean bean = page.getBean();
String result = Boolean.toString(bean.getCheckBool());
result += ":" + bean.getRadioStr();
result += ":" + bean.getListStr();
bean.setMsgStr(result);
}
}
ざっとこんな感じになりました。ここでは、CheckBox、RadioChoice、ListChoiceといったコンポーネントを作成していますね。これらがそれぞれチェックボックス、ラジオボタン、リストのコンポーネントです。
CheckBoxは、booleanの値のプロパティをPropertyModelに設定して利用します。これで、チェックの状態がtrue/falseで得られるようになります。RadioChoiceは、表示するラジオボタン名をListにして渡してやります。こうすることで、自動的にラジオボタンの項目を作成してくれるのです。ListChoiceも同様で、Listの項目を自動的に一覧表示するようになります。