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

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. }

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

  1. 使用hibernate validate做参数校验

    1.为什么使用hibernate validate ​ 在开发http接口的时候,参数校验是必须有的一个环节,当参数校验较少的时候,一般是直接按照校验条件做校验,校验不通过,返回错误信息.比如以下校验 ...

  2. SpringMvc中的数据校验

    SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...

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

    最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...

  4. SpringMVC中使用Interceptor拦截器

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

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

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

  6. SpringMVC+spring-security+sitemesh+hibernate+freemarker整合-转

    http://www.oschina.net/code/snippet_170632_46774 代码分享 当前位置: 代码分享 » Java  » Web编程 搜 索   SpringMVC+spr ...

  7. SpringMvc中Interceptor拦截器用法

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆等. 一. 使用场景 1 ...

  8. SpringMVC 中的Interceptor 拦截器

    1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors>  <!-- 日志拦截器 -->  <mvc:interceptor> ...

  9. SpringMVC中的异步提交表单

    1.前言 近期在做一个项目,前台框架用的是EasyUI+SpringMVC,因为对SpringMVC不太了解,所以刚開始接触的时候有点吃力,在此通过一个EasyUi中的DataGrid表格来总结一下. ...

  10. 关于springMVC中component-scan的问题以及springmvc.xml整理

    关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法         最近在学习使用springMVC+myba ...

随机推荐

  1. Linux命令详解之–cd命令

    cd命令是linux实际使用当中另一个非常重要的命令,本文就为大家介绍下Linux中cd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux cd命令用于切换当前工作目录至 d ...

  2. 基于UML项目的分析与设计

    1,概述 项目中需求和设计的文档是必然的,UML工具可以帮助指导我们从不同的角度去看待一个新的系统,并把这个系统分解剖析出来.本篇文章主要讲述的是如何将UML应用到项目的开发工作中,关于如何学习UML ...

  3. 【python】获取高德地图省市区县列表

    项目中需要用省市区来进行检索,原想高德地图肯定会有API来获得这些数据,结果没有找到,有一个接口好像可以用,但是会附带大量的边界坐标点. 所以就不如自己把高德的省市区列表扒下来,自己写接口来完成这个功 ...

  4. express新旧语法对比

    备个份, 原文: http://stackoverflow.com/questions/25550819/error-most-middleware-like-bodyparser-is-no-lon ...

  5. 微信html5开发选哪一个

        html5选哪个开发框架       ①. Justep起步 X5框架 : 专门用来开发web App的大型开发工具集,x5 v3.0有765.58M,不选. ②.Jquery Mobile ...

  6. 谷歌的网页排序算法(PageRank Algorithm)

    本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于“谷歌”(google)今天已经成为一个被广 ...

  7. IOS 网络浅析-(十三 SDWebImage 实用技巧)

    IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ...

  8. iOS:自己写的一个星级评价的小Demo

    重新整理了下自己星级评价的Demo,可以展示星级评价,可以动态修改星级. github的地址:https://github.com/hunterCold/HYBStarEvaluationView a ...

  9. iOS之 APP异常捕获反馈给服务器

    在我们开发的app中, 不可避免的, 有时候用户使用软件会崩溃.  我们就需要捕获异常, 可以在入口类中加入相应的代码, 可以在每次用户打开程序的时候, 检查一下沙盒中是否有崩溃日志, 如果有, 可以 ...

  10. iOS之通过PaintCode快速实现交互动画的最方便方法 未解问题

    需求: 问题: 源码百度云下载链接: http://pan.baidu.com/s/1o7r4hCm 密码: 8atd 其他学习链接:http://www.jianshu.com/p/90d6cd35 ...