在springmvc中使用hibernate-validate

在springmvc.xml中加入

 1 <!-- 国际化配置 -->
 2     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
 3     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
 4         <property name="basenames">
 5             <list>
 6                 <value>classpath:resource/ValidationMessages</value>
 7             </list>
 8         </property>
 9         <property name="useCodeAsDefaultMessage" value="true" />
10     </bean>
11     <!-- 注册验证器 -->
12     <mvc:annotation-driven validator="validator" />
13
14     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
15         <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
16         <!-- 这里配置将使用上面国际化配置的messageSource -->
17         <property name="validationMessageSource" ref="messageSource" />
18     </bean> 

资源文件(可以省略不写,这样错误信息就直接写中文即可)

1 val.age.message=\u5E74\u9F84\u4E0D\u80FD\u8D85\u8FC720\u5C81
2
3 username.not.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
4 pwd.not.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
5 username.length=\u7528\u6237\u540D\u6700\u5927\u4E0D\u80FD\u8D85\u8FC7{max},\u6700\u5C0F\u4E0D\u80FD\u5C11\u4E8E{min}
6
7 email.format.error=\u90AE\u7BB1\u683C\u5F0F\u4E0D\u6B63\u786E

被验证的bean:

  1 package com.lee.web.entity;
  2
  3 import javax.validation.constraints.Max;
  4 import javax.validation.constraints.Pattern;
  5
  6 import org.hibernate.validator.constraints.Email;
  7 import org.hibernate.validator.constraints.Length;
  8 import org.hibernate.validator.constraints.NotBlank;
  9
 10 public class ValBean {
 11
 12
 13     /**
 14      * Bean Validation 中内置的 constraint
 15      * @Null   被注释的元素必须为 null
 16      * @NotNull    被注释的元素必须不为 null
 17      * @AssertTrue     被注释的元素必须为 true
 18      * @AssertFalse    被注释的元素必须为 false
 19      * @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
 20      * @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
 21      * @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
 22      * @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
 23      * @Size(max=, min=)   被注释的元素的大小必须在指定的范围内
 24      * @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内
 25      * @Past   被注释的元素必须是一个过去的日期
 26      * @Future     被注释的元素必须是一个将来的日期
 27      * @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式
 28      * Hibernate Validator 附加的 constraint
 29      * @NotBlank(message =)   验证字符串非null,且长度必须大于0
 30      * @Email  被注释的元素必须是电子邮箱地址
 31      * @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内
 32      * @NotEmpty   被注释的字符串的必须非空
 33      * @Range(min=,max=,message=)  被注释的元素必须在合适的范围内
 34      */
 35     private Long id;
 36
 37     @Max(value=20, message="{val.age.message}")
 38     private Integer age;
 39
 40     @NotBlank(message="{username.not.null}")
 41     @Length(max=6, min=3, message="{username.length}")
 42     private String username;
 43
 44     @NotBlank(message="{pwd.not.null}")
 45     @Pattern(regexp="/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/", message="密码必须是6~10位数字和字母的组合")
 46     private String password;
 47
 48
 49     @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$", message="手机号格式不正确")
 50     private String phone;
 51
 52     @Email(message="{email.format.error}")
 53     private String email;
 54
 55     public Long getId() {
 56         return id;
 57     }
 58
 59     public void setId(Long id) {
 60         this.id = id;
 61     }
 62
 63     public String getUsername() {
 64         return username;
 65     }
 66
 67     public void setUsername(String username) {
 68         this.username = username;
 69     }
 70
 71     public String getPassword() {
 72         return password;
 73     }
 74
 75     public void setPassword(String password) {
 76         this.password = password;
 77     }
 78
 79     public String getPhone() {
 80         return phone;
 81     }
 82
 83     public void setPhone(String phone) {
 84         this.phone = phone;
 85     }
 86
 87     public String getEmail() {
 88         return email;
 89     }
 90
 91     public void setEmail(String email) {
 92         this.email = email;
 93     }
 94
 95     public Integer getAge() {
 96         return age;
 97     }
 98
 99     public void setAge(Integer age) {
100         this.age = age;
101     }
102 }

controller,json form或者作为rest接口,都行

 1 @RequestMapping(value = "/val", method=RequestMethod.POST)
 2     @ResponseBody
 3     public LeeJSONResult val(@Valid @RequestBody ValBean bean, BindingResult result) throws Exception {
 4
 5         if(result.hasErrors()){
 6             //如果没有通过,跳转提示
 7             Map<String, String> map = getErrors(result);
 8             return LeeJSONResult.error(map);
 9         }else{
10             //继续业务逻辑
11         }
12
13         return LeeJSONResult.ok();
14     }
15
16     private Map<String, String> getErrors(BindingResult result) {
17         Map<String, String> map = new HashMap<String, String>();
18         List<FieldError> list = result.getFieldErrors();
19         for (FieldError error : list) {
20             System.out.println("error.getField():" + error.getField());
21             System.out.println("error.getDefaultMessage():" + error.getDefaultMessage());
22
23             map.put(error.getField(), error.getDefaultMessage());
24         }
25         return map;
26     }
时间: 2024-09-29 01:10:58

在springmvc中使用hibernate-validate的相关文章

springMVC(八)——数据校验(后台校验 hibernate validate).

数据校验(后台校验 hibernate validate) 1.首先要导入jar包 2.在相应的实体类中加入注解 package com.zhiyou100.zjc.bean; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; public class

SpringMVC 数据校验。(后台校验 hibernate validate).

1. 数据校验.(后台校验 hibernate validate). 引入jar包. 在相应的实体类中加入注解. 1 package com.zhiyou100.wc.bean; 2 3 import javax.validation.constraints.Pattern; 4 5 import org.hibernate.validator.constraints.Length; 6 import org.hibernate.validator.constraints.NotEmpty; 7

springmvc 中配置aop

之前自己搭建了springmvc+spring+mybaits/hibernate 的框架,并在applicationcontext.xml中配置了aop,但 发现aop根本不生效,而不用框架的话则可以生效. applicationContext.xml配置如下: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schem

详解SpringMVC中Controller的方法中参数的工作原理

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet

【SpringMVC学习06】SpringMVC中的数据校验

这一篇博文主要总结一下springmvc中对数据的校验.在实际中,通常使用较多是前端的校验,比如页面中js校验,对于安全要求较高的建议在服务端也要进行校验.服务端校验可以是在控制层conroller,也可以是在业务层service,controller校验页面请求的参数的合法性,在服务端控制层conroller的校验,不区分客户端类型(浏览器.手机客户端.远程调用):service层主要校验关键业务参数,仅限于service接口中使用的参数.这里主要总结一下何如使用springmvc中contr

SpringMVC中使用Interceptor拦截器

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的.在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Intercep

Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https://git.oschina.net/LanboEx/sdh.git 大体采用的开源项目有:Spring + SpringMVC + Druid + JPA(Hibernate Impl). 1. 采用到的开源项目漫谈 Spring 迷人的依赖注入特性, 使其已经稳稳的占据在 JavaEE 项目引用开

SpringMVC+Spring4.0+Hibernate 简单的整合

学习的初始 一个 Hello World. 1.搭建好环境 工欲善其事,必先利其 这是需要的jar 简单的说下 : standard.jar  这个jar包是我们在jsp中使用JSTL标签的时候用到的.你也可以使用SpringEL . servlet-api.jar  这是你在SpringMvc中 用到HttpServletRequest 等这些类. 导入的包都OK了,上传下载的包我没有导.现在就应该到配置文件了. 2.配置文件  2.1web.xml   项目使用了什么框架.看这个配置就知道了

【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,