@Valid

@Valid注解用于校验,所属的包: javax.validation.Valid.

你可以定义实体,在实体的属性上添加校验规则,在API接收数据时添加@Valid注解,这时你的实体将会开启一个校验的功能。

## 空检查

@NotEmpty:用在集合类上面;不能为null,而且长度必须大于0 

@NotBlank: 用在String上面;只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 

@NotNull:用在基本类型上;不能为null,但可以为empty。

## 长度检查

@Size(min=,max=):验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  

不要错用了异常类型,比如在int上不可用@size

@Length(min=, max=) : 只适用于String 类型

##  Booelan检查

@AssertTrue:   验证 Boolean 对象是否为 true  

@AssertFalse:  验证 Boolean 对象是否为 false 

##  日期检查

@Past: 验证 Date 和 Calendar 对象是否在当前时间之前  

@Future: 验证 Date 和 Calendar 对象是否在当前时间之后  

@Pattern: 验证 String 对象是否符合正则表达式的规则

##  数值检查

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

@Min:  验证 Number 和 String 对象是否大等于指定的值  

@Max:  验证 Number 和 String 对象是否小等于指定的值  

@DecimalMax:  被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度

@DecimalMin: 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度

@Digits:  验证 Number 和 String 的构成是否合法  

@Digits(integer=,fraction=):  验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。

BindingResult

Spring验证的错误返回

@Valid 和 BindingResult 是一一对应的,如果有多个@Valid,那么每个@Valid后面跟着的BindingResult就是这个@Valid的验证结果,顺序不能乱

 
 1.首先在参数实体类上面加上相关的验证信息
public class PublicUserForm implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
* 手机号
*/
@NotBlank(message = "{required}")
@Pattern(regexp = RegexpConstant.MOBILE_REG, message = "{mobile}")
private String telephone; /**
* 密码
*/
private String password;

2.controller层

 public ResponseResult regist(@Valid PublicUserForm publicUserForm, BindingResult bindingResult) throws Exception {

        //在这里,我们判断参数是否通过校验
if (bindingResult.hasErrors()) {
Map<String,String> errorMsg = new HashMap<>();
for (FieldError item:bindingResult.getFieldErrors()) {
errorMsg.put(item.getField(),item.getDefaultMessage());
}
//自定义的返回,并将错误信息返回
return new ResponseResult(false,200, JSON.toJSONString(errorMsg),errorMsg);
} PublicUser publicUser = publicUserService.regist(publicUserForm);
return new ResponseResult(true,200,"访问成功!",null);
}

【Java】使用@Valid+BindingResult进行controller参数校验的更多相关文章

  1. springboot @valid与@validated的参数校验使用总结

    好久没在这平台写博客了,最近整理了这东西,先给出总结 // @Valid只能用在controller,@Validated可以用在其他被spring管理的类上 // @Valid可以加在成员变量上(本 ...

  2. spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决

    参考文档: https://www.oschina.net/question/115867_2282711   谢谢原作者

  3. Java Bean Validation(参数校验) 最佳实践

    转载来自:http://www.cnblogs.com 参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的 ...

  4. SpringBoot 如何进行参数校验,老鸟们都这么玩的!

    大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...

  5. 接口参数校验之@Valid与BindingResult

    接口方法往往需要对入参做一些校验,从而判断入参是否合格,而javax.validation包为我们提供了一些常用的参数校验注解,使用起来很方便. 下面这个示例是检验入参对象中的password是否为空 ...

  6. 使用@Valid和BindingResult验证请求参数的合法性并处理校验结果

    /** * 添加用户,使用@RequestBody将请求体映射到Action方法参数中 * 使用@Valid注解验证请求参数的合法性 * 使用BindingResult处理校验结果 * @param ...

  7. Java web服务端参数校验Javax.validation (springboot)

    一.基本使用 Javax.validation是spring集成自带的一个参数校验接口.可通过添加注解来设置校验条件. 下面以springboot项目为例进行说明.创建web项目后,不需要再添加其他的 ...

  8. 【springboot】@Valid参数校验

    转自: https://blog.csdn.net/cp026la/article/details/86495659 扯淡: 刚开始写代码的时候对参数的校验要么不做.要么写很多类似 if( xx == ...

  9. java自定义注解实现前后台参数校验

    2016.07.26 qq:992591601,欢迎交流 首先介绍些基本概念: Annotations(also known as metadata)provide a formalized way ...

随机推荐

  1. 应用安全 - 工具 | 数据库 - redis - 漏洞 - 汇总

    未授权访问 Date 类型 未授权访问导致getshell 影响范围 复现 (1)shell反弹 (2)结合SSH服务 (3)结合web服务 分析

  2. editText内容从hint右输入

    如何让editText内容从hint右输入呢: <EditText android:id="@+id/et_password" android:textColor=" ...

  3. 拦截器Interceptor和过滤器Filter的区别

    (1)过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西.定义这些要求的工具,就是过滤器.(理解:就是一堆字母中取一个B) (2)拦截器(Interceptor):在一个 ...

  4. java基础笔记(10)

    Html:载体      CSS:样式   JavaScript:特效 html: 1. <html></html>称为根标签,所有的网页标签都在<html>< ...

  5. 嗨翻C语言--这里没有蠢问题(一)

    问:card_name[0]是什么意思?答:它是用户输入的第一个字符.如果用户输入了10,那么card_name[0]就将是1.问:总是得用/*和*/写注释吗?答:如果你的编译器支持C99标准,就可以 ...

  6. laravel框架之增刪改查

    <?php namespace App\Http\Controllers\admin; use Illuminate\Http\Request as request; use App\Http\ ...

  7. 1、Java语言概述与开发环境——JDK的安装与环境变量的配置

    Selenium.Appium.Macaca.RobotFramework.Jmeter等框架或工具均必须的一样东西——JDK,也就是基于java开发的东西都要这个东西.JDK的概念在这里不作描述. ...

  8. PythonDay08

    第八章 今日内容 文件操作 读操作 写操作 +操作 其他操作 读操作 r模式f = open('test.txt', mode='r', encoding='utf-8')print(f.read() ...

  9. TMS320F28335——下载程序到flash中

    一.让CCS软件支持Flash烧写 添加F28335.cmd文件 如图屏蔽掉25335_RAM_lnk.cmd 2.支持从Flash中拷贝文件到RAM中 添加DSP2832x_MemCopy.c 在主 ...

  10. asp,net 传值方式 优缺点比较

    .net C#中页面之间传值传参的六种方法 1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用 ...