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;
}
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”>
;
<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]