@Valid与@Validated
1 @Valid 只能校验java bean的参数。可以作用于方法、参数、属性。可用于属性上做嵌套校验。是java的
2 @Validated 可以作用于方法、参数、类上,不能作用在成员属性上,因此不能实现嵌套校验。有分组功能,可以针对参数使不同的分组有不同的约束。是spring的
3 两者的主要区别是:能否分组校验;能否嵌套校验。
分组校验示例代码:
public ExamLabelCmsVO save(@RequestBody @Validated(IInsertGroup.class) ExamLabelCmsForm form, @ApiIgnore @CurrentCmsUserId long cmsUserId) { ExamLabel record = examLabelService.getByName(form.getLabelName()); ....... public class ExamLabelCmsForm { @ApiModelProperty("标签ID") @NotNull(groups = IUpdateGroup.class) @Null(groups = IInsertGroup.class) private Long id; ...... import javax.validation.groups.Default; public interface IUpdateGroup extends Default { } import javax.validation.groups.Default; public interface IInsertGroup extends Default { }
嵌套校验示例代码:
public class HomeModuleTimeSaveRequest { @Valid @NotEmpty @ApiModelProperty("时间段列表") private List<HomeModuleTimeInfo> timeList; }