当前位置:首页 > 开发 > 互联网 > 正文

springMVC 使用JSR-303 Validation验证

发表于: 2014-04-15   作者:杨白白   来源:转载   浏览:
摘要: JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。 JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。 登录需要验证类 public class Login { @NotEmpty
JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。
JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。

登录需要验证类
public class Login {

	@NotEmpty(message="用户名不能为空")
	private String userName;
	@NotEmpty(message="密码不能为空")
	private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}	
	
}


控制器类

@Controller  
public class UserController {  
   
    @RequestMapping("login")  
    public String login(@Valid Login user, BindingResult result) {  
       if (result.hasErrors())  
           return "user/login";  
       return "redirect:/";  
    }  
     
} 

我们的处理器方法必须给定包含Errors的参数,这可以是Errors本身,也可以是它的子类BindingResult,使用了Errors参数就是告诉Spring关于表单对象数据校验的错误将由我们自己来处理,否则Spring会直接抛出异常,而且这个参数是必须紧挨着@Valid参数的,即必须紧挨着需要校验的参数,这就意味着我们有多少个@Valid参数就需要有多少个对应的Errors参数,它们是一一对应的

在springMvc的配置里加上了<mvn:annotation-driven/>(这是springMvc默认的配置,在Spring3.1只有推荐使用RequestMappingHandlerAdapter代替)之后Spring会自动检测classpath下的JSR-303提供者并自动启用对JSR-303的支持,把对应的校验错误信息放到Spring的Errors对象中。详细配置如下:

<!--Spring3.1开始的注解 替代<mvc:annotation-driven/>-->
<bean		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
		p:ignoreDefaultModelOnRedirect="true">
		<property name="webBindingInitializer"><!--
			<bean
				class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
				<property name="validator" ref="validator" />
				<property name="conversionService">
					<bean
						class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
				</property>
			</bean>
		</property>
		
</bean>


<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource"
		p:basename="i18n/messages" />


<bean id="validator"
		class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
		<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
		<!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
		<property name="validationMessageSource" ref="messageSource" />
</bean>

springMVC 使用JSR-303 Validation验证

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
http://www.cnblogs.com/liukemng/p/3738055.html 在系列(4)、(5)中我们展示了如何绑定数据,绑
http://www.cnblogs.com/liukemng/p/3738055.html 在系列(4)、(5)中我们展示了如何绑定数据,绑
在《Struts2教程4:使用validate方法验证数据》中曾讲到使用validate方法来验证客户端提交的数据,
在《Struts2教程4:使用validate方法验证数据》中曾讲到使用validate方法来验证客户端提交的数据,
来源地址:http://www.blogjava.net/nokiaguy/archive/2008/04/21/194599.html 在《 Struts2教程 4
在《Struts2教程4:使用validate方法验证数据》中曾讲到使用validate方法来验证客户端提交的数据,但
在《Struts2教程4:使用validate方法验证数据》中曾讲到使用validate方法来验证客户端提交的数据,但
jQuery表单验证插件 --- Validation 特点: 1、内置验证规则:拥有必填、数字、E-Mail、URL和信用卡
网上关于struts2 使用Validation框架进行数据验证的例子很多 这里不一一解释每个文件每行代码是什么
本文为原创,如需转载,请注明作者和出处,谢谢! 在《Struts2教程4:使用validate方法验证数据》中
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号