@Validated校验多层json

请求体

{
    "aid":123,
	"name": "abc",
	"phone": "13333333333",
    "address":"abcdefgh",
    "region":{
        "province":234,
        "district":445,
        "city":3,
        "full_name":"辽宁 大连"
    }
}


@RestController
@RequestMapping("api/user/address")
@Api(tags = "用户地址管理")
public class AddressController {
    @Resource

    @NotLogin
    @PostMapping("/add")
    @ApiOperation(value="添加地址")
    public AjaxResult<Object> add(@Validated(AddressValidate.Basic.class) @RequestBody AddressValidate addressValidate) {
        return AjaxResult.success(addressValidate);
    }

    @NotLogin
    @PostMapping("/edit")
    @ApiOperation(value="添加地址")
    //验证场景不同,使用了AddressValidate.Update
    public AjaxResult<Object> edit(@Validated(AddressValidate.Update.class) @RequestBody AddressValidate addressValidate) {
        return AjaxResult.success(addressValidate);
    }

}

 AddressValidate.java

package com.mdd.front.validate.users;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.io.Serializable;
@Data
@ApiModel("更新地址")
public class AddressValidate implements Serializable {
    private static final long serialVersionUID = 1L;

    //验证场景分组
    public interface Basic {}
    public interface Update extends Basic {}

    //只有update时才验证aid
    @NotNull(groups = Update.class, message = "地址ID参数缺失")
    @ApiModelProperty(value = "地址ID", required = true)
    private Integer aid;

    @NotNull(groups = Basic.class, message = "联系人参数缺失")
    @NotBlank(groups = Basic.class, message = "联系人不能为空")
    @Size(groups = Basic.class, min = 2, message="联系人最少2个字")
    @ApiModelProperty(value = "联系人", required = true)
    private String name;

    @NotNull(groups = Basic.class, message = "联系电话参数缺失")
    @NotBlank(groups = Basic.class, message = "联系电话不能为空")
    @Size(groups = Basic.class, min = 11, max = 11, message="电话应为11位")
    @Pattern(groups = Basic.class, regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
    @ApiModelProperty(value = "联系电话", required = true)
    private String phone;

    @NotNull(groups = Basic.class, message = "详细地址参数缺失")
    @NotBlank(groups = Basic.class, message = "详细地址不能为空")
    @Size(groups = Basic.class, min = 6, message="详细地址最少6个字")
    @ApiModelProperty(value = "详细地址", required = true)
    private String address;

    @NotNull(groups = Basic.class, message = "地区参数缺失")
    @Valid
    private Region region;

    @Data
    public static class Region {
        @NotNull(groups = Basic.class, message = "province参数缺失")
        @ApiModelProperty(value = "省", required = true)
        private Integer province;

        @NotNull(groups = Basic.class, message = "city参数缺失")
        @ApiModelProperty(value = "市", required = true)
        private Integer city;

        @NotNull(groups = Basic.class, message = "district参数缺失")
        @ApiModelProperty(value = "区", required = true)
        private Integer district;

        @NotNull(groups = Basic.class, message = "full_name参数缺失")
        @ApiModelProperty(value = "地区全称", required = true)
        private String full_name;
    }
}

相关推荐

  1. @Validated校验json

    2024-05-13 23:34:06       36 阅读
  2. Validation-参数校验框架

    2024-05-13 23:34:06       50 阅读
  3. validator参数校验

    2024-05-13 23:34:06       22 阅读
  4. 参数校验注解使用- validator

    2024-05-13 23:34:06       72 阅读
  5. SpringMVC使用validation参数校验

    2024-05-13 23:34:06       40 阅读
  6. Spring Bean参数校验Validator

    2024-05-13 23:34:06       31 阅读
  7. python 解析级的json数据

    2024-05-13 23:34:06       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 23:34:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 23:34:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 23:34:06       82 阅读
  4. Python语言-面向对象

    2024-05-13 23:34:06       91 阅读

热门阅读

  1. centos7下vim命令笔记-查找字符

    2024-05-13 23:34:06       32 阅读
  2. 【C++】防止头文件被重复包含

    2024-05-13 23:34:06       34 阅读
  3. Cocos Creator 3.8.x报错:5302

    2024-05-13 23:34:06       26 阅读
  4. 消息 队列

    2024-05-13 23:34:06       36 阅读
  5. 在vue3中测试执行typescript代码片段

    2024-05-13 23:34:06       38 阅读
  6. Gauss数据库备份恢复

    2024-05-13 23:34:06       27 阅读
  7. leetcode题目122

    2024-05-13 23:34:06       32 阅读