JSR303 @Valid @Validated 校验入参 LIst 中的参数

1. 在Controller中,方法上增加@Validated注解,参数前增加 @Valid注解

例:

	/**
	 * 测试List内容校验
	*/
	@PostMapping("/hello/test/save")
	@Validated
	public Response testSave(@Valid @RequestBody SaveReqVO saveReqVO) {
		log.info("入参:{}", saveReqVO);
		return ResponseWrapper.ok();
	}

2. 在入参VO中,List参数上方加@Valid注解

SaveReqVO例:

package com.xiangyun.matter.igt.entity.vo;

import lombok.Data;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

@Data
@ToString(callSuper = true)
public class SaveReqVO {
	/**
	 * 姓名
	 */
	@NotBlank(message = "姓名不能为空")
	@Length(max = 50, message = "姓名长度不能超过50")
	private String name;

	/**
	 * 手机号码
	 */
	@NotBlank(message = "手机号码不能为空")
	@Length(max = 20, message = "手机号码长度不能超过20")
	private String phoneNumber;


	/**
	 * 家属信息
	 */
	@Valid
	@NotNull(message = "家属信息不能为空")
	private List familyMembersList;

}

3. 在List泛型指定的VO中,对需要校验的参数上方增加@Valid注解,若要对VO中所有参数进行校验,可在类上增加@Valid注解。

本文例在类上增加注解。

FamilyMembersSaveReqVO 例:

package com.xiangyun.matter.igt.entity.vo;

import lombok.Data;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;

@Data
@ToString(callSuper = true)
@Valid
public class FamilyMembersSaveReqVO {
	/**
	 * 家属姓名
	 */
	@NotBlank(message = "家属姓名不能为空")
	@Length(max = 50, message = "家属姓名长度不能超过50")
	private String familyMembersName;

	/**
	 * 家属与本人关系
	 */
	@NotBlank(message = "家属与本人关系不能为空")
	@Length(max = 2, message = "家属与本人关系长度不能超过2")
	private String familyMembersType;

	/**
	 * 家属手机号码
	 */
	@NotBlank(message = "家属手机号码不能为空")
	@Length(max = 20, message = "家属手机号码长度不能超过20")
	private String familyMembersMobile;

	/**
	 * 备注1
	 */
	@Length(max = 512, message = "备注1长度不能超过512")
	private String remark1;

	/**
	 * 备注2
	 */
	@Length(max = 512, message = "备注2长度不能超过512")
	private String remark2;

}

目前,已可以进行校验。

4.1. 测试例:入参:{}

返回:

JSR303 @Valid @Validated 校验入参 LIst 中的参数_第1张图片

4.2. 入参:

{
    "phoneNumber": "123",
     "name": "",
     "familyMembersList":[{
         "familyMembersName":""
     }]
}

返回:

JSR303 @Valid @Validated 校验入参 LIst 中的参数_第2张图片

你可能感兴趣的:(JSR303,参数校验,java)