使用 `@Validated`会无法校验入参的列表属性(内部元素的注解),可以使用 `Validation`提供 的静态方法。

使用 @Validated会无法校验入参的列表属性(内部元素的注解),可以使用 Validation提供 的静态方法。下面是使用示例。

  • @PostMapping("/createBatteryScheme")
    CommonResponse<Object> createBatteryScheme(@RequestBody BatterySchemeCreateParam param) {
        //使用Validation提供的静态方法进行校验
        Set<ConstraintViolation<BatterySchemeCreateParam>> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(param);
        //若vaildate集合大于0,表示有不通过的校验结果。
        if (validate.size() > 0) {
            return CommonResponse.fail(validate.iterator().next().getMessage());
        }
    
        baseConfigService.createBatteryScheme(param);
        return CommonResponse.success();
    }
    

这里给出BatterySchemeCreateParam的具体结构

  • @Data
    public class BatterySchemeCreateParam {
    
        @NotNull
        @Schema(title = "景区ID")
        private String schoolId;
    
        @NotBlank
        @Schema(title = "方案名称")
        private String schemeName;
    
        @Schema(title = "备注")
        private String remarks;
    
        //@Validated注解是无法处理列表内部元素的校验注解的
        @Schema(title = "电量方案配置")
        private List<BatterySchemeProfileDto> batterySchemeProfileDto;
    
    }
    
  • @Data
    public class BatterySchemeProfileDto {
    
        @PositiveOrZero
        @NotNull
        @Schema(title = "最小电压(伏特)")
        private Float minVoltage;
    
        @PositiveOrZero
        @NotNull
        @Schema(title = "最大电压(伏特)")
        private Float maxVoltage;
    
        @Max(100)
        @PositiveOrZero
        @NotNull
        @Schema(title = "在此电压区间(min~max)对应的电量(%)")
        private Float batteryPercentage;
    
        @PositiveOrZero
        @NotNull
        @Schema(title = "续航里程(千米)")
        private Float mileage;
    
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值