Вы можете написать собственное ограничение для вашего объекта.
Конечная точка покоя.
@RequestMapping(value = "/doSomething", method = RequestMethod.POST)
public ResponseEntity<String> doSomething(@RequestBody @Valid MyObject myObject) {
Тело POJO.
@MyConstraint(message = "p1 is false, p3 should also be false")
public class MyObject {
private boolean p1;
private boolean p2;
private boolean p3;
//getters and setters
}
Аннотация ограничения:используется MyObject
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidator.class)
public @interface MyConstraint {
String message() default "Invalid object";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Валидатором, с которого начинается ограничение.
public class MyConstraintValidator implements ConstraintValidator<MyConstraint, MyObject> {
@Override
public boolean isValid(MyObject value, ConstraintValidatorContext context) {
if (!value.isP1()) {
return value.isP1() == value.isP3();
}
return true;
}
}