SpringMVC-表单验证

本文详细介绍了SpringMVC中如何进行表单数据的格式化和校验,包括`mvc:annotation-driven`配置、`InitBinder`注解、数据格式化的`@NumberFormat`和`@DateTimeFormat`注解、使用JSR303进行数据校验以及配置数据校验步骤。此外,还讲解了如何在页面上回显错误信息和定制错误信息,帮助开发者更好地实现表单验证和用户体验。
摘要由CSDN通过智能技术生成
1.mvc:annotation-driven
实际开发时建议都配置该参数。
配置<mvc:annotation-driven/>后,SpringMVC会自动注册RequestMappingHandlerMapping,
RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver三个bean。
还将提供一下支持
-支持用ConversionServices实例对表单参数进行类型转换,通过配置conversion-service属性自定义类型转换。
-支持使用@NumberFormat注解,@DateTimeFormat注解完成数据类型格式化
-支持使用@Valid注解对JavaBean实例进行JSR303验证
-支持使用@ReqeustBody和@ResponseBody注解
2.InitBinder注解
WebDataBinder用于完成表单字段到JavaBean属性的绑定,而@InitBinder注解则可以对WebDataBinder对象进行初始化,
以及数据设定的相关限制。被InitBinder注解修饰的方法不能有返回值,且参数通常为WebDataBinder。
如下例子,规定name属性不会被表单字段自动绑定。
package spring;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class TestController {
	
	@RequestMapping(value="/test", method=RequestMethod.GET)
	public String testGet(Map<String, Object>map){
		Person person = new Person();
		map.put("person", person);
		return "form";
	}
	
	@RequestMapping(value="/test", method=RequestMethod.POST)
	public String testPost(Person person){
		System.out.println(person);
		return "success";
	}
	
	@InitBinder
	public void testBinder(WebDataBinder dataBinder){
		dataBinder.setDisallowedFields("name");
	}
}
3.数据格式化

表单的数据转换是将字符串形式的表单数据转换为JavaBean对象,如果是简单的对象不需要格式,则不需要特殊指定,但是比如日期类型的格式,如果不指定,则无法进行格式化,因为不知道是2016/6/4格式,还是2016-6-4格式。为了让SpringMVC在进行格式化时知道具体的目标,只需要在JavaBean对象中使用合适的注解进行类型,格式化标注即可。

注解类型有:

-@NumberFormat
     有两个互斥的属性,style:Style.NUMBER 正常数字,Style.PERCENT 百分数,Style.CURRENCY 货币
     pattern:类型为String,可以进行自定义样式比如“#,###”

-@DateTimeFormat 可以对Date,Calendar,Long时间类型进行标注,有一个pattern属性,可以赋值比如“yyyy-MM-dd hh:mm:ss"的格式。

public class Person {
	@NumberFormat(pattern="##,##") //注意.是小数的关键字,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值