开发中经常会碰到dto里的校验规则会在Controller里不同的方法上校验规则是不同的,一般寻常思维就是可以写多个dto来满足,但是缺点是会发现dto的类会增加许多。
解决方法:定义多个不同的校验分组@Validated,之前一直用@Valid,2者区别就是@Validated支持分组,而后者不支持。
public interface First {
}
public interface Second {
}
@GroupSequence({First.class,Second.class})
public interface Group {
}
@ApiModel
public class UserDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7294793096896162924L;
@ApiModelProperty("id修改必传,新增不必传")
@NotNull(groups = { First.class }, message = "id不能为null")
private Integer id;
//...........
}
//controller
//需要校验id不能为空的方法里
@Validated({ First.class }) @RequestBody(required = true) UserDto userDto
//不需要校验 id的方法里
@Validated @RequestBody(required = true) UserDto userDto