在由@Validated标注了value属性后,实体类中未标注groups属性的字段校验将会失效。示例如下:
// 自定义接口
public interface Update {
}
// 实体类
public class Demo {
@NotNull(groups = Update.class)
private Integer id;
@NotBlank
private String name;
}
// Controller 方法
public Object test(@RequestBody @Validated(Update.class) Demo demo) {
...
}
以上Demo类的id字段会被校验而name字段则不会处理。
原因:
校验属性默认的groups为Default.class,该类位于javax.validation.groups包下。如果自定义了接口,则只会处理该被接口标注的字段。
解决方法:
自定义接口继承Default类即可。
import javax.validation.groups.Default;
// 自定义接口
public interface Update extends Default{
}
探讨在使用@Validated注解时,未指定groups属性的字段校验为何会失效,及如何通过自定义接口继承Default类来解决此问题。
1298





