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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top