В граалях это просто написать пользовательскую проверку и валидацию между полями.
Как это можно сделать в рамках микронавигации?
Учитывая простой POJO, который содержит список сложных объектов;
a) Как можно написать валидатор, чтобы обеспечить уникальность в списке?
б) Как можно написать валидатор, если между полями есть некоторая связь?
При использовании класса, который реализует io.micronaut.validation.validator.constraints. ConstraintValidator - только кажется возможным получить доступ к значению самого аннотированного поля.
package pkg;
import io.micronaut.core.annotation.Introspected;
import javax.validation.Valid;
import java.util.List;
@Introspected
public class PoJo {
// how to write a validation to check for uniqueness in the list, e.g. only one on each type exists in the list
@Valid
List<ComplexObject> complexObjectList;
public PoJo(List<ComplexObject> complexObjectList) {
this.complexObjectList = complexObjectList;
}
public List<ComplexObject> getComplexObjectList() {
return complexObjectList;
}
}
package pkg;
import io.micronaut.core.annotation.Introspected;
@Introspected
public class ComplexObject {
// how to cross validate fields
// e.g. type=A num must be > 0 and < 10
// type=B num must be > 10 and < 20
String type;
int num;
public ComplexObject(String type, int num) {
this.type = type;
this.num = num;
}
public String getType() {
return type;
}
public int getNum() {
return num;
}
}```