Spring MVCのラジオボタンとラジオボタンの例

Spring MVCラジオボタンとラジオボタンの例

Spring MVCでは、<form:radiobutton />を使用してHTMLラジオボタンをレンダリングし、ラジオボタンの値をJSPページ内にハードコーディングします。 <form:radiobuttons />は複数のラジオボタンをレンダリングするために使用され、ラジオボタンの値は実行時に生成されます。

このチュートリアルでは、<form:radiobutton /><form:radiobuttons />の使用方法を示します。

1.

ラジオボタンを生成し、値をハードコーディングします。

public class Customer{
    String sex;
    //...
}
Male
Female

Default value…
上記のラジオボタンでデフォルトで選択されている値として「Male」を作成するには、「sex」プロパティを「M」に設定します。例えば ​​:

public class Customer{
    String sex = "M";
    //...
}

or

//SimpleFormController...
@Override
protected Object formBackingObject(HttpServletRequest request)
    throws Exception {

    Customer cust = new Customer();
    //Make "Male" as the default radio button selected value
    cust.setSex("M");

    return cust;

}

2.

複数のラジオボタンを生成すると、実行時に値が生成されます。

//SimpleFormController...
protected Map referenceData(HttpServletRequest request) throws Exception {

    Map referenceData = new HashMap();

    List numberList = new ArrayList();
    numberList.add("Number 1");
    numberList.add("Number 2");
    numberList.add("Number 3");
    numberList.add("Number 4");
    numberList.add("Number 5");
    referenceData.put("numberList", numberList);

    return referenceData;
}

Default value…
上記のラジオボタンでデフォルトで選択されている値として「Number 1」を作成するには、「favNumber」プロパティを「Number 1」に設定します。例えば ​​:

public class Customer{
    String favNumber = "Number 1";
    //...
}

or

//SimpleFormController...
@Override
protected Object formBackingObject(HttpServletRequest request)
    throws Exception {

    Customer cust = new Customer();
    //Make "Number 1" as the default radio button selected value
    cust.setFavNumber("Number 1")

    return cust;
}

Note
ラジオボタンの選択では、「path」または「property」が「radio button value」と等しい限り、ラジオボタンは自動的に選択されます。

完全なラジオボタンの例

Spring MVCの完全なラジオボタンの例を考えてみましょう。

1. モデル

ラジオボタンの値を格納する顧客モデルクラス。

ファイル:Customer.java

package com.example.customer.model;

public class Customer{

    String favNumber;
    String sex;

    public String getFavNumber() {
        return favNumber;
    }
    public void setFavNumber(String favNumber) {
        this.favNumber = favNumber;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

}

2. コントローラ

フォームのラジオボタンの値を処理するためのSimpleFormController。 デフォルトの選択値としてラジオボタン「M」を作成します。

ファイル:RadioButtonController.java

package com.example.customer.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.example.customer.model.Customer;

public class RadioButtonController extends SimpleFormController{

    public RadioButtonController(){
        setCommandClass(Customer.class);
        setCommandName("customerForm");
    }

    @Override
    protected Object formBackingObject(HttpServletRequest request)
        throws Exception {

        Customer cust = new Customer();
        //Make "Make" as default radio button checked value
        cust.setSex("M");

        return cust;
    }

    @Override
    protected ModelAndView onSubmit(HttpServletRequest request,
        HttpServletResponse response, Object command, BindException errors)
        throws Exception {

        Customer customer = (Customer)command;
        return new ModelAndView("CustomerSuccess","customer",customer);
    }

    protected Map referenceData(HttpServletRequest request) throws Exception {

        Map referenceData = new HashMap();

        List numberList = new ArrayList();
        numberList.add("Number 1");
        numberList.add("Number 2");
        numberList.add("Number 3");
        numberList.add("Number 4");
        numberList.add("Number 5");
        referenceData.put("numberList", numberList);

        return referenceData;
    }
}

3. バリデーター

sex」および「number」ラジオボタンが選択されていることを確認するための単純なフォームバリデーター。

ファイル:RadioButtonValidator.java

package com.example.customer.validator;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.example.customer.model.Customer;

public class RadioButtonValidator implements Validator{

    @Override
    public boolean supports(Class clazz) {
        //just validate the Customer instances
        return Customer.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {

        Customer cust = (Customer)target;

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "sex", "required.sex");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "favNumber", "required.favNumber");

    }
}

ファイル:message.properties

required.sex = Please select a sex!
required.favNumber = Please select a number!

4. View

Springのフォームタグ<form:radiobutton />および<form:radiobuttons />の使用法を示すJSPページ。

ファイル:CustomerForm.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>






    

Spring's form radio button example

Sex : Male Female
Choose a number :

JSTLを使用して、送信されたラジオボタン値をループし、表示します。

ファイル:CustomerSuccess.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>



    

Spring's form radio button example

Sex : ${customer.sex}
Favourite Number : ${customer.favNumber}

5. Spring Beanの構成

それをすべてリンクしてください〜



  

    
        
        

        
        
            
        
    

    
    
        
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

6. Demo

SpringMVC-RadioButton-Example-1

ユーザーがフォームの送信中にラジオボタンの値を選択しなかった場合は、エラーメッセージを表示して強調表示します。

SpringMVC-RadioButton-Example-2

フォームが正常に送信された場合は、送信されたラジオボタンの値を表示するだけです。

SpringMVC-RadioButton-Example-3

ソースコードをダウンロード

ダウンロード–SpringMVCForm-RadioButton-Example.zip(9KB)