SpringMVC之数据校验(如何校验、页面转向、国际化配置文件的定制)

如何校验?

(1)使用JSR 303验证标准;

JSR 303是Java为Bean数据合法性校验提供的标准框架,已经包含在JavaEE6.0中,其通过在Bean属性上标注类似于@NotNull、@Max等标准的注解制定校验规则,并通过标准的验证接口对Bean进行验证。

常用注解:

	@Null:被注释的元素必须为null
	@NotNull:被注释的元素必须不为null
	@AssertTrue:被注释的元素必须为true
	@AssertFalse:被注释的元素必须为false
	@Min(value):被注释的元素必须是个数字,值必须大于等于指定的最小值
	@Max(value):被注释的元素必须是个数字,值必须小于等于指定的最大值
	@DecimalMin(value):被注释的元素必须是个数字,值必须大于等于指定的最小值
	@DecimalMax(value):被注释的元素必须是个数字,值必须小于等于指定的最大值
	@Size(max, min):被注释的元素大小必须在制定范围内
	@Digits(integer, fraction):被注释的元素必须是个数字,值必须在可接受的范围内
	@Past:被注释的元素必须是一个过去的日期
	@Future:被注释的元素必须是一个将来的日期
	@Pattern(value):被注释的元素必须符合制定的表达式

(2)加入Hibernate Validator验证框架的jar包;

Hibernate Validator除支持所有标准的校验注解外,还支持以下扩展注解:

	@Email:被注释的元素必须是电子邮箱地址
	@Length:被注释的字符串的大小必须在指定的范围内
	@NotEmpty:被注释的字符串必须非空
	@Range:被注释的元素必须在合适的范围内

(3)在SringMVC配置文件中国添加<mvc: annotation-driven/>;
(4)在bean的属性上添加对应的注解;
(5)在目标方法bean类型的前面添加@Valid注解。

注意: 需验证的Bean对象和其绑定结果对象或错误对象是成对出现的,它们之间不允许声明其他的入参。如下:

public String handle(@Valid User user, BindingResult userBindingResult, String sessionId, ModelMap mm, @Valid Dept dept, Errors deptErrors){
	...
}
验证出错转向哪个页面?

直接在方法中添加return即可。

return “input” //转向input页面
错误消息如何显示?如何将错误消息进行国际化?
  1. 显示:利用form:errors即可。
lastName:<form:input path="lastName"/>
<form:errors path="lastName"></form:errors>
  1. 定制国际化错误提示消息:

当一个属性校验失败后,校验框架会为该属性生成4个消息代码,这些代码以校验注解类名为前缀,结合modelAttribute、属性名及属性类型名生成多个对应的消息代码,例如User类中的password属性标注了@Pattern注解,当该属性值不满足@Pattern所定义的规则时,就会产生如下4个错误代码:

Pattern.user.password
Pattern.password
Pattern.java.lang.String
Pattern

(1)添加国际化配置文件I8n.properties:

NotEmpty.employee.lastName=^^lastName不能为空
Email.employee.email=Email地址不合法
Past.employee.birthday=Birthday不能为将来的一个时间

(2)配置国际化配置文件:

<!--配置国际化配置文件-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
	<property name="basename" value="i18n"></property>
</bean> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值