目前比较流行的验证做法:前端jquery-form-validate + 后端hibernate-validate

在pom中添加相关jar:

<!-- use hibernate-validator to validate entity before enter controller --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>${validation.api.version}</version></dependency>

spring mvc中配置:

 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
13     <!-- 注册验证器 -->
14     <mvc:annotation-driven validator="validator" />
15
16     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
17         <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
18         <!--这里配置将使用上面国际化配置的messageSource -->
19         <property name="validationMessageSource" ref="messageSource" />
20     </bean>

配置错误信息:(当然也可以直接写在javabean中)

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
8
9 title.not.null=\u63A8\u9001\u4E3B\u9898\u4E0D\u80FD\u4E3A\u7A7A

entity(setter getter 略):

 1 public class ValBean {
 2
 3
 4     /**
 5      * Bean Validation 中内置的 constraint
 6      * @Null   被注释的元素必须为 null
 7      * @NotNull    被注释的元素必须不为 null
 8      * @AssertTrue     被注释的元素必须为 true
 9      * @AssertFalse    被注释的元素必须为 false
10      * @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
11      * @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
12      * @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
13      * @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
14      * @Size(max=, min=)   被注释的元素的大小必须在指定的范围内
15      * @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内
16      * @Past   被注释的元素必须是一个过去的日期
17      * @Future     被注释的元素必须是一个将来的日期
18      * @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式
19      * Hibernate Validator 附加的 constraint
20      * @NotBlank(message =)   验证字符串非null,且长度必须大于0
21      * @Email  被注释的元素必须是电子邮箱地址
22      * @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内
23      * @NotEmpty   被注释的字符串的必须非空
24      * @Range(min=,max=,message=)  被注释的元素必须在合适的范围内
25      */
26     private Long id;
27
28     @Max(value=20, message="{val.age.message}")
29     private Integer age;
30
31     @NotBlank(message="{username.not.null}")
32     @Length(max=6, min=3, message="{username.length}")
33     private String username;
34
35     @NotBlank(message="{pwd.not.null}")
36     @Pattern(regexp="/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/", message="密码必须是6~10位数字和字母的组合")
37     private String password;
38
39
40     @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$", message="手机号格式不正确")
41     private String phone;
42
43     @Email(message="{email.format.error}")
44     private String email;
45 }

controller引用:

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

done

ssm中使用hibernate-validator验证BO相关推荐

  1. hibernate.validator验证参数

    前言 在接口开发中,经常是需要对传入参数完整性进行验证的,或者对手机号格式进行验证等,而一般不了解@Valid注解之前,都是通过自己封装方法来验证,都是一堆if else集合,这样判断对于代码结构很不 ...

  2. SpringBoot中使用Hibernate Validator校验工具类

    1.说明 在Spring Boot已经集成Hibernate Validator校验器的情况下, 对于配置了校验注解的请求参数, 框架会自动校验其参数, 但是如果想手动校验一个加了注解的普通对象, 比 ...

  3. hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别

    Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull 的区别 Hibernate Validator验证框架中@NotEmpty.@NotBlank ...

  4. 在Java SE中使用Hibernate Bean Validator

    Bean Validation主页上指出:" Bean Validation是Java规范,-在Java SE中运行,但集成在Java EE(6和7)中." 这篇文章演示了如何在J ...

  5. SpringMVC集成Hibernate Validator进行注解式的参数校验——让代码更少、更加专注于业务逻辑

    SpringMVC集成Hibernate Validator进行注解式的参数校验 --让代码更少.更加专注于业务逻辑 1 问题背景: 参数验证是一个常见的问题,例如验证用户输入的密码是否为空.邮箱是否 ...

  6. Hibernate Validator JSR303示例教程

    Hibernate Validator JSR303示例教程 欢迎使用Hibernate Validator示例教程.数据验证是任何应用程序的组成部分.您将使用Javascript在表示层找到数据验证 ...

  7. 如何优雅的做数据校验-Hibernate Validator详细使用说明

    文章目录 Hibernate Validator的使用 依赖 bean约束声明和验证,Validator 方法约束声明和验证,ExecutableValidator 约束注解 空与非空检查 Boole ...

  8. SpringBoot启动报错Action: Add an implementation, such as Hibernate Validator, to the classpath解决办法

    微服务启动失败报错 在网上找了很长时间尝试了很多办法都没有用,这让我十分烦躁,这Hibernate Validator我根本没用,他报什么错啊,但他又报Add an implementation, s ...

  9. Springmvc的服务端数据验证-----Hibernate Validator

    导入Hibernate validator的Jar包 hibernate-validator-4.3.0.Final.jar jboss-logging-3.1.0.CR2.jar validatio ...

最新文章

  1. 《因果科学周刊》第4期:因果赋能推荐系统
  2. 的setinterval函数_Vue定时器与JS 定时器 setInterval() 和 setTimeout()
  3. pandas,apply并行计算的一个demo
  4. eclipse maven scm
  5. 与太多男人一起工作有害健康
  6. 电脑显示器闪屏_时尚超薄可升降:华硕新品家用护眼显示器MZ27AQL
  7. Tideways+Xhgui搭建非侵入式php监控平台
  8. 全网首发:JAVA的+=类算符,带有自动类型转换功能
  9. 数学建模优化模型简单例题_数学建模案例分析--最优化方法建模7习题六 -
  10. 微信换头像小程序实现原理及源码
  11. 数据结构与算法之美-问题与思考收集
  12. 十大著名黑客——李纳斯-托瓦兹
  13. java itext5 插入一个艺术文字 (剪切蒙版)
  14. 【机器学习】Python 3.0 简单实现K-邻近法
  15. 组播地址分类 Cyrus
  16. pthread_getspecific pthread_setspecific
  17. Serverlet简介
  18. docker仓库——搭建registry私有仓库
  19. 实战Vue:基于Vue的移动端购物商城
  20. YottaChain数据加密的可靠性和安全性有多高?

热门文章

  1. python入门教程非常详细-Python 基础教程
  2. linux网络服务器框架转载
  3. 英文文献中的数学符号
  4. 這麼多年興許從來沒有釋放過
  5. VoIP应用系统大盘点
  6. 手动写个类似的Spring MVC框架试试
  7. 记录Nginx搭建网关服务
  8. 【金融】财务报表可能有用的点
  9. Java数据结构--链表
  10. 来自法国的山寨苹果系统——梨子系统PearOS,精美仿苹果风格的免费Linux操作系统(颇有iOS和OSX的神...