Код: Выделить всё
@Data
public class PojoB {
@Size(min = 1, max = 5)
@NotBlank()
@Pattern(regexp = "[0-9]+")
private String code;
@Valid
private PojoA pojoA;
}
Код: Выделить всё
@Data
public class PojoA {
@Size(min = 1, max = 5)
@NotBlank()
@Pattern(regexp = "[0-9]+")
private String code;
}
Теперь относительно нового API /testSpringValidation2, pojoA.code может допускать больше символов и без изменений/отличий от других правил проверки, сравнивающих /testSpringValidation1. Итак, @Pattern(regexp = "[0-9a-z]+", groups = LessValidation.class) добавляется. Но как это реализовать без изменения существующего кода?
Код: Выделить всё
public interface LessValidation extends Default {
}
Код: Выделить всё
@PostMapping("/testSpringValidation2")
public PojoB testSpringValidation2(@RequestBody @Validated({LessValidation.class}) PojoB reqBody) {
return reqBody;
}
Код: Выделить всё
@Data
public class PojoA {
@Size(min = 1, max = 5)
@NotBlank()
@Pattern(regexp = "[0-9]+")
@Pattern(regexp = "[0-9a-z]+", groups = LessValidation.class)
private String code;
}
Код: Выделить всё
{
"code":"12345",
"pojoA":{
"code": "12ab"
}
}
Код: Выделить всё
error:
{
"type": "error",
"code": "400",
"details": "mandatory parameter pojoA.code is invalid: must match \"[0-9]+\""
}
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-other-a