Spring MVC单选按钮和单选按钮示例

在Spring MVC中, <form:radiobutton />用于呈现HTML单选按钮,并且单选按钮值在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
默认值…
要将上面的单选按钮中的“ 男性 ”作为默认选择值,只需将“ 性别 ”属性设置为“ M ”,例如:
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}"  />
默认值…
要在上述单选按钮中将“ 数字1 ”作为默认选择值,只需将“ favNumber ”属性设置为“ 数字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;	
}

注意
对于单选按钮选择,只要“ 路径 ”或“ 属性 ”等于“ 单选按钮值 ”,就会自动选择单选按钮。

全单选按钮示例

我们来看一个完整的Spring MVC单选按钮示例:

1.型号

用于存储单选按钮值的客户模型类。

文件: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”设置为默认选择值。

文件: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.验证者

一个简单的表单验证器,可确保选中“ 性别 ”和“ 数字 ”单选按钮。

文件: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.查看

一个JSP页面,显示Spring的表单标签<form:radiobutton /><form:radiobuttons />的用法。

文件: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循环提交的单选按钮值,并显示它。

文件:CustomerSuccess.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

如果用户在提交表单时未选择任何单选按钮值,请显示并突出显示错误消息。

SpringMVC-RadioButton-Example-2

如果表单提交成功,只需显示提交的单选按钮值。

SpringMVC-RadioButton-Example-3

下载源代码

下载它– SpringMVCForm-RadioButton-Example.zip (9KB)

翻译自: https://mkyong.com/spring-mvc/spring-mvc-radiobutton-and-radiobuttons-example/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值