Javaプログラミング/Javaプログラミング関連情報

WicketでダイナミックなWeb開発!(後編)(4ページ目)

後編では、Wicketに用意されているコンポーネントを組み合わせてフォームをデザインしましょう。

執筆者:掌田 津耶乃

チェックボックス、ラジオボタン、リスト


それでは、その他のフォーム関係のコンポーネントについても見てみましょう。よく用いられるものとして、チェックボックス、ラジオボタン、リストといったものを作成してみることにします。

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の項目を自動的に一覧表示するようになります。


  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます