JSR 303 - Composición de restricción
-
12-10-2019 - |
Pregunta
¿Cómo ejecutar un ConstraintValidator
dentro de un ConstraintValidator
?
tengo un @NotEmpty
personalizada y tienen un ConstraintValidator
encargo es para cada tipo, y funciona bien.
Ahora quiero crear una restricción de nivel de clase que los cheques al menos uno de los campos especificados no está vacío usando los ConstraintValidator
encargo de que ya tengo. El elemento limitante (@ClassNotEmpty
) se lleva a cabo, pero el problema es la implementación ConstraintValidator
. ¿Cómo puedo obtener una instancia ConstraintValidator
para una restricción dada? es decir.
isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
String[] fieldValues = getFieldValues(value, this.classNotEmpty.fieldNames());
for (String fieldValue : fieldValues) {
<What do I put here?>.isValid(fieldValue, constraintValidatorContext);
}
}
¿Hay una manera de hacer esto sin tener que tirar la rutina de validación a una clase de ayuda?
Por cierto, estoy utilizando Spring e Hibernate Validator.
Solución
Después de más investigaciones, parece que no hay ninguna solución conocida para obtener una instancia de ConstraintValidator
para una restricción dado, portátil o no. Una clase de ayuda parece ser la única manera de hacer esto.
Otros consejos
No tengo la información en frente de mí, pero yo recuerdo haber leído algo sobre los validadores que se componen de otros validadores. Así que si usted tiene dos validadores A y B. Se puede definir una tercera 'C' que se compone de los otros dos. Caza a través de la mana, debería buscar que sea.
Sólo hizo una búsqueda, lea esto: http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-compound
Puede ser lo que busca.