notempty注解属于哪个依赖_Spring框架 之@Valid注解的使用(嵌套类型的效验)

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

@Valid 注解类型的使用:

@Null

限制只能为null

@NotNull

限制必须不为null

@AssertFalse

限制必须为false

@AssertTrue

限制必须为true

@DecimalMax(value)

限制必须为一个不大于指定值的数字

@DecimalMin(value)

限制必须为一个不小于指定值的数字

@Digits(integer,fraction)

限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future

限制必须是一个将来的日期

@Max(value)

限制必须为一个不大于指定值的数字

@Min(value)

限制必须为一个不小于指定值的数字

@Past

限制必须是一个过去的日期

@Pattern(value)

限制必须符合指定的正则表达式

@Size(max,min)

限制字符长度必须在min到max之间

@Past

验证注解的元素值(日期类型)比当前时间早

@NotEmpty

验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@NotBlank

验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Email

验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

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

一、普通实体字段验证及嵌套实体字段验证区别

注意:实体类验证只是针对该实体内第一层对象的属性进行验证,如果存在被验证的实体类为另一个实体类的的成员变量,那么就需要在该成员变量(需要验证的实体类)上加 @valid 注解

二、Restful请求接口(action/controller层/WEB业务层),实体类数据绑定验证对比

@1.

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.validation.BindingResult;

//请求参数为简单数据组合对象,单层实体字段验证

@ApiOperation(value = "从业务平台获取卡片内容", notes = "卡片内容获取")

@RequestMapping(value = "/cardInfoDetailtest", method = RequestMethod.POST)

public Object getCardInfoDetailtemp(@Valid CardInfoDTO info,BindingResult bindingResult){

OutputObjectCSF obj = new OutputObjectCSF();

if (bindingResult.hasErrors()) {

obj.setRtnCode(ReturnInfoEnums.PROCESS_PARAMETER_ERROR.getCode());

obj.setRtnMsg(bindingResult.getAllErrors().get(0).getDefaultMessage());

return obj;

}

return obj;

}

//请求参数为复杂数据组合对象,嵌套实体字段验证

@ApiOperation(value = "从业务平台获取卡片内容", notes = "卡片内容获取")

@RequestMapping(value = "/cardInfoDetailtest", method = RequestMethod.POST)

public Object getCardInfoDetailtemp(@Valid CardInfoDetail info,BindingResult bindingResult){

OutputObjectCSF obj = new OutputObjectCSF();

if (bindingResult.hasErrors()) {

obj.setRtnCode(ReturnInfoEnums.PROCESS_PARAMETER_ERROR.getCode());

obj.setRtnMsg(bindingResult.getAllErrors().get(0).getDefaultMessage());

return obj;

}

return obj;

}

@2.swagger-ui.html页面接口数据验证对比

三、@pathvariable的校验

spring-boot可能目前并不支持对参数的验证:

public Result> xoById( @NotNull @NotBlank @Size(min=10,max=32)@PathVariable(value="accountId") String id) {}

但目前还无法抛出异常, 可能在spring的下一个版本中解决,或者不用@Pathvariable,而在service中

Class XoService{

public xoMethon( @NotNull String id){

}

}

来解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值