springmvc的数据校验的配置和使用
2017-09-22 10:08
351 查看
参考链接:
SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC
SpringMVC学习系列(6) 之 数据验证
SpringMVC使用@Valid注解进行数据验证
数据验证框架 Apache BVal 简介(更新)
====================================================
1.maven管理引入springmvc注解数据校验所需jar包:
2.配置springmvc的全局数据校验:
springmvc全局数据校验的配置方式:
注意:本质其实就是将校验器绑定到处理器适配器上;
全局配置方式1:通过标签annotation-driven将校验器自动注入到适配器中;
全局配置方式2(自学):手动将校验器注入到适配器中
3.自定义局部校验:
(1)自定义数据校验类:
(2)测试controller:
(3)对应的实体类:
总结:如果全局校验配置不成功,可能是映射器和适配器配置错误,可能配置了多个映射器和适配器,而springmvc执行时由上到下使用映射器和适配器,然而我们把校验器注入到了下面某个适配器中,导致无法执行校验器;
SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC
SpringMVC学习系列(6) 之 数据验证
SpringMVC使用@Valid注解进行数据验证
数据验证框架 Apache BVal 简介(更新)
====================================================
1.maven管理引入springmvc注解数据校验所需jar包:
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.0.Final</version> </dependency>
2.配置springmvc的全局数据校验:
springmvc全局数据校验的配置方式:
注意:本质其实就是将校验器绑定到处理器适配器上;
全局配置方式1:通过标签annotation-driven将校验器自动注入到适配器中;
<!-- 即使不添加validator="validator",只要引入了hibernate的校验插件,仍然能够,自动将默认的校验器注入到适配器中 --> <mvc:annotation-driven validator="validator">
全局配置方式2(自学):手动将校验器注入到适配器中
<!-- 处理器适配器,执行拦截器和后端控制器,并配置相应的数据转换类和数据校验类 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <!-- 数据校验 --> <property name="webBindingInitializer" ref="webBindingInitializer"></property> </bean> <!-- 全局数据校验 --> <!-- 数据验证 Validator bean --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 校验器,使用hibernate校验器 -->< 17033 /span> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下面的ValidationMessages.properties文件 --> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <property name="validator" ref="validator"/> </bean>
3.自定义局部校验:
(1)自定义数据校验类:
package validation; import org.springframework.util.StringUtils; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; import edu.hrbeu.platform.modeling.pojo.TestOrder; /** * Created by wb-zhangkenan on 2016/9/2. */ public class TestValidtor implements Validator{ /** * 判断支持的JavaBean类型 * @param aClass * @return */ @Override public boolean supports(Class<?> aClass) { return TestOrder.class.equals(aClass); } /** * 实现Validator中的validate接口 * @param obj * @param errors */ @Override public void validate(Object obj, Errors errors) { //把校验信息注册到Error的实现类里 ValidationUtils.rejectIfEmpty(errors,"id",null,"id不能为空!"); TestOrder testOrder = (TestOrder) obj; if(StringUtils.isEmpty(testOrder.getName())){ errors.rejectValue("name",null,"家庭地址不能为空!!!!"); } } }
(2)测试controller:
package edu.hrbeu.platform.modeling.businessCollaboration.controller; import java.util.List; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; 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.ResponseBody; import edu.hrbeu.platform.modeling.pojo.TestOrder; import validation.TestValidtor; @Controller @RequestMapping("/testValidation") public class TestValidationController { //绑定PersonalValidator @InitBinder public void initBinder(WebDataBinder webDataBinder){ webDataBinder.addValidators(new TestValidtor()); } @RequestMapping("testPojo") @ResponseBody public List<ObjectError> testPojo(@Valid TestOrder testOrder, BindingResult bindingResult) { List<ObjectError> allErrors = bindingResult.getAllErrors(); return allErrors; } }
(3)对应的实体类:
package edu.hrbeu.platform.modeling.pojo; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotEmpty; public class TestOrder { @NotNull(message="不能为null....") private Integer id; @NotEmpty(message="不能为空串....") private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "TestOrder [id=" + id + ", name=" + name + "]"; } }
总结:如果全局校验配置不成功,可能是映射器和适配器配置错误,可能配置了多个映射器和适配器,而springmvc执行时由上到下使用映射器和适配器,然而我们把校验器注入到了下面某个适配器中,导致无法执行校验器;
相关文章推荐
- SpringMVC学习笔记六:使用 hibernate-validator注解式数据校验
- SpringMVC和FreeMarker整合中使用注解方式的后台数据校验
- springmvc使用JSR-303进行数据校验实例
- SpringMVC 使用 JSR-303 进行数据校验实例
- 如何使用SpringMVC进行数据校验
- SpringMVC 配置和使用校验框架
- SpringMVC(20):数据校验功能 -- 使用JSR303实现服务器端的数据校验
- springMVC中使用Json数据相关配置
- 使用SpringMVC数据验证框架validation做数据校验
- SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据
- 使用SpringMVC数据验证框架validation做数据校验
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterF
- struts2中的数据校验文件配置
- 数据/配置 的存储方式 Json篇 以JsonCpp库使用为例
- ASP.NET - 使用Web.config配置数据
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterF
- 直接使用SQL操作Oracle空间数据的原理以及配置方法
- Windows+OpenLDAP+MySQL配置及使用详解(三)——LDAP数据的维护
- webconfig中配置log4net 数据访问及业务层使用
- 使用javascript实现无刷新数据校验