@Validated是作用到方法上
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Validated {
Class<?>[] value() default {};
}
@valid 是作用在实体类字段上
@Target({ElementType.METHOD,ElementType.FIELD,ElementType.CONSTRUCTOR,ElementType.PARAMETE, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Valid {
}
例如:
@ApiOperation("项目管理流程发起")
@PostMapping("/createProjectFlow")
public CommonResult createTodoProjectFlow(
@Validated @RequestBody ProjectFlowVO projectFlowVO) {
return CommonResult .success(xxx);
}
@Data @ApiModel("流程管理发起请求实体类")
public class ProjectFlowVO {
@ApiModelProperty(value = "生产者系统标识", required = true)
@NotBlank(message = "生产者系统标识不能为空")
private String appId;
@ApiModelProperty(value = "流程表单数据", required = true)
@NotNull(message = "流程表单数据不能为空")
@Valid
private FormData formData;
@Data
@ApiModel("流程表单数据")
public static class FormData {
@ApiModelProperty(value = "生产者系统本次动作唯一标识", required = true) @NotBlank(message = "生产者系统本次动作唯一标识不能为空")
private String actionId;
....
}
注意:controller接口的请求体如果使用的是@valid只能校验到appId和formData字段,不能校验到formData.ac