`
mhtbbx
  • 浏览: 35004 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring mvc 校验@NULL @notNULL等

阅读更多

一、准备校验时使用的JAR

 

[java] view plain copy
 
  1. validation-api-1.0.0.GA.jar:JDK的接口;  
  2. hibernate-validator-4.2.0.Final.jar是对上述接口的实现;  
  3. log4j、slf4j、slf4j-log4j  

 

二、编写需要校验的bean

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;

 

三、校验方法

 

    @RequestMapping("/login")
    public String testValid(@Valid User user, BindingResult result){
        if (result.hasErrors()){
            List<ObjectError> errorList = result.getAllErrors();
            for(ObjectError error : errorList){
                System.out.println(error.getDefaultMessage());
            }
        }
           
        return "test";
    }

 

备注:这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常


校验注解

1 空检查

[java] view plain copy
 
  1. @Null   验证对象是否为null  
  2. @NotNull验证对象是否不为null, 无法查检长度为0的字符串  
  3. @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.  
  4. @NotEmpty 检查约束元素是否为NULL或者是EMPTY,用在集合类上面
1.@NotNull:不能为null,但可以为empty(""," ","   ")   
2.@NotEmpty:不能为null,而且长度必须大于0(" ","  ")
3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0, ("test") 即:必须有实际字符

@NotNull: The CharSequence, Collection, Map or Array object is not null,but can be empty.
@NotEmpty: The CharSequence, Collection, Map or Array object is not null and size > 0.
@NotBlank: The string is not null and the trimmed length is greater thanzero.

Examples:
[java] view plain copy
 
  1. 1.String name = null;  
  2. @NotNullfalse  
  3. @NotEmpty:false   
  4. @NotBlank:false   
  5.   
  6. 2.String name = "";  
  7. @NotNull:true  
  8. @NotEmptyfalse  
  9. @NotBlankfalse  
  10.   
  11. 3.String name = " ";  
  12. @NotNulltrue  
  13. @NotEmptytrue  
  14. @NotBlankfalse  
  15.   
  16. 4.String name = "Great answer!";  
  17. @NotNulltrue  
  18. @NotEmpty:true  
  19. @NotBlank:true  

Booelan检查

[java] view plain copy
 
  1. @AssertTrue 验证 Boolean 对象是否为 true   
  2. @AssertFalse验证 Boolean 对象是否为 false   

长度检查

[java] view plain copy
 
  1. @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内。可以验证集合内元素的多少。  
  2. @Length(min=, max=) Validates that the annotated string is between min and max included.主要用于String类型  

日期检查

 

[java] view plain copy
 
  1. @Past   验证 Date 和 Calendar 对象是否在当前时间之前    
  2. @Future 验证 Date 和 Calendar 对象是否在当前时间之后    
  3. @Pattern验证 String 对象是否符合正则表达式的规则  

 

数值检查

建议使用在Stirng,Integer类型,不建议使用在int类型上,
因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null

[html] view plain copy
 
  1. @Min            验证 Number 和 String 对象是否大等于指定的值    
  2. @Max            验证 Number 和 String 对象是否小等于指定的值    
  3. @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度  
  4. @DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度  
  5. @Digits     验证 Number 和 String 的构成是否合法    
  6. @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。  

其他

[java] view plain copy
 
  1. @Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)  
  2. @CreditCardNumber信用卡验证  
  3. @Email  验证是否是邮件地址,如果为null,不进行验证,算通过验证。  
  4. @ScriptAssert(lang= ,script=, alias=)  
  5. @URL(protocol=,host=, port=,regexp=, flags=)  
  6. @Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum.  
  7. @Range(min=10000,max=50000,message="range.bean.wage")  

小结

       枚举:@NotNull校验是否为空  值的正确性有框架判定
       引用:首先@NotNull判定是否为空,然后@valid进行级联校验
       数值:@NotNull判断是否为空, 使用@size/@Max/@Min进行大小的控制
       日期:@NotNull校验是否为空  @DateTimeFormat结合jode可以固定日期的格式
                  对于日期的范围 注解解决不了 需要写方法判断了
                 日期类型输入纯文本数字也是可以通过的  值得注意
       字符串:使用@NotBlank,而不是@NotNull、@NotEmpty,@NotBlan是2者的结合;使用@Length限制长度   
               对于其输入的具体内容的控制 目前没有好办法


      @NotEmpty 用在集合类上面  不能为null,而且长度必须大于0  (" ","  ")
      @NotBlank 用在String上面  只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 ("test")    即:必须有实际字符
      @NotNull    用在基本类型上  不能为null,但可以为empty  (""," ","   ") 
 

级联校验

[java] view plain copy
 
  1. public class ReportVO {  
  2.   
  3.     @NotNull(message = "举报内容不能为空")  
  4.     @Valid  
  5.     private ReportContent content;  
  6.   
  7.     @NotNull(message = "举报信息不能为空")  
  8.     @Valid  
  9.     private ReportInfo info;  
  10. }  
 
[java] view plain copy
 
  1. public class ReportInfo extends BaseTenantDomain<String> {  
  2.   
  3.     private String reportContentId;  
  4.   
  5.     @NotBlank(message = "举报人id不能为空")  
  6.     private String reportorId;  
  7.   
  8.     @NotNull(message = "举报类型不能为空")  
  9.     private ReportType reportType;  
  10.   
  11.     @NotBlank(message = "举报详细描述不能为空")  
  12.     @Size(max=100, message = "举报详细描述不能超过100")  
  13.     private String desc;  
  14.   
  15.     private Date reportTime; // 举报时间  
  16.     private Date dealTime; // 处理时间  
  17.   
  18. }  
[java] view plain copy
 
  1. public void report(@RequestBody @Valid ReportVO reportVo) {  
  2.     contentService.report(reportVo.getContent(), reportVo.getInfo());  
  3. }<span style="font-family:microsoft yahei;"><span style="font-size: 15px; line-height: 35px;">  
  4. </span></span>  
分享到:
评论

相关推荐

    Spring MVC 之@ModelAttribute使用.rar

    Spring MVC 之@ModelAttribute使用.rar

    Spring Mvc(1)Spring MVC 校验

    Spring Mvc(1)Spring MVC 校验 springmvc 基本校验 springmvc 自定义校验 springmvc 组合校验

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    Spring MVC之@RequestMapping详解

    前段时间项目中用到了REST风格来开发程序,但是当用POST、PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request....

    spring 注解验证@NotNull等使用方法

    主要介绍了spring 注解验证@NotNull等使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    SpringMVCDemo:Spring MVC 框架知识案例

    1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7....

    Spring MVC打印@RequestBody、@Response日志的方法

    主要介绍了Spring MVC打印@RequestBody、@Response日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Spring MVC参数校验详解(关于`@RequestBody`返回`400`)

    主要介绍了Spring MVC参数校验的相关资料,主要是针对`@RequestBody`返回`400`的问题,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    spring mvc拦截器过滤json中的null值

    spring mvc拦截器,过滤json数据中的null值,将null变成空字符串,内含截图,及jar包

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

Global site tag (gtag.js) - Google Analytics