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]