開発者ドキュメント

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

Spring MVCでは、HTMLラジオボタンをレンダリングするために

<form:radiobutton/>

が使用され、ラジオボタンの値はJSPページ内にハードコードされています。

<form:radiobuttons/>

は複数のラジオボタンのレンダリングに使用され、ラジオボタンの値は実行時に生成されます。

このチュートリアルでは、

<form:radiobutton/>



<form:radiobuttons/>

の使い方を説明します。

1. <form:radiobutton/>

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

public class Customer{
    String sex;
   //...
}
<form:radiobutton path="sex" value="M"/>Male
<form:radiobutton path="sex" value="F"/>Female
public class Customer{
    String sex = "M";
   //...
}

または

…​.//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. <form:radiobuttons/>

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

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

    Map referenceData = new HashMap();

    List<String> numberList = new ArrayList<String>();
    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;
}
<form:radiobuttons path="favNumber" items="${numberList}" />
  • デフォルト値…​

    +上記のラジオボタンでデフォルトの選択値として ”

    Number 1

    “を作成するには、 ”

    favNumber

    “プロパティを ”

    Number 1 ** “に設定します。

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

または

…​.//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;
}
** 注意** ラジオボタンの選択では、 "**  path ** "または "**  property ** "が "** ラジオボタン値** "と同じである限り、ラジオボタンが自動的に選択されます。

=== 完全なラジオボタンの例

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

===  1.モデル

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

__File:Customer.java__

package com.mkyong.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"をデフォルトの選択値にします。

__File:RadioButtonController.java__

package com.mkyong.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.mkyong.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<String> numberList = new ArrayList<String>();
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 ** "ラジオボタンが選択されていることを確認する単純なフォームバリデータ。

__File:RadioButtonValidator.java__

package com.mkyong.customer.validator;

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

import com.mkyong.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.ビュー

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

__File:CustomerForm.jsp__

<%@ taglib prefix=”form” uri=”http://www.springframework.org/tags/form”%>
<html>
<head>
<style>
.error {
color: #ff0000;
}

errorblock {
    color: #000;
    background-color: #ffEEEE;
    border: 3px solid #ff0000;
    padding: 8px;
    margin: 16px;
}
</style>
</head>

<body>
<h2>Spring’s form radio button example</h2>

<form:form method="POST" commandName="customerForm">
    <form:errors path="** " cssClass="errorblock" element="div"/>
    <table>
        <tr>
            <td>Sex :</td>
            <td><form:radiobutton path="sex" value="M"/>Male <form:radiobutton
                path="sex" value="F"/>Female</td>
            <td><form:errors path="sex" cssClass="error"/></td>
        </tr>
        <tr>
            <td>Choose a number :</td>
            <td><form:radiobuttons path="favNumber" items="${numberList}"/>
                            </td>
            <td><form:errors path="favNumber" cssClass="error"/></td>
        </tr>
        <tr>
            <td colspan="3"><input type="submit"/></td>
        </tr>
    </table>
</form:form>

</body>
</html>

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

ファイル:Customer Success.jsp

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

<html>
<body>
<h2>Spring’s form radio button example</h2>
Sex : ${customer.sex}
<br/> Favourite Number : ${customer.favNumber}
<br/>
</body>
</html>

===  5. Spring Beanの設定

すべてのリンク〜

<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd”&gt

;

<bean
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean class="com.mkyong.customer.controller.RadioButtonController">
    <property name="formView" value="CustomerForm"/>
    <property name="successView" value="CustomerSuccess"/>
    <!-- Map a validator -->
    <property name="validator">
        <bean class="com.mkyong.customer.validator.RadioButtonValidator"/>
    </property>
</bean>
<!-- Register the Customer.properties -->
<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="message"/>
</bean>
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
</beans>
===  6.デモ

ページにアクセスする -  **  http://localhost:8080/SpringMVCForm/radiobutton.htm **

例:SpringMVC-RadioButton-Example-1、width = 640、height = 267]

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

例:2、title = "SpringMVC-RadioButton-Example-2"、width = 640、height = 277]

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

[SpringMVC-RadioButton-Example-3、title = "SpringMVC-RadioButton-Example-3"、width = 640、height = 242]

=== ソースコードをダウンロードする

ダウンロードする -  link://wp-content/uploads/2010/08/SpringMVCForm-RadioButton-Example.zip[SpringMVCForm-RadioButton-Example.zip](9KB)

link://タグ/ラジオボタン/[ラジオボタン]リンク://tag/spring-mvc/[spring
mvc]
モバイルバージョンを終了