Añadir la validación de Bean para un Conversor.
Me gustaría usar la validación para un bean convertidor, pero obtengo el siguiente error:
HV000151: Un método que anula otro método no debe redefinir la configuración de restricción de parámetros, pero el método StringToFooConverter#convert(String) redefine la configuración de Converter#convert(Object).
en org.hibernate.validator.internal.metadata.aggregated.rule.OverridingMethodMustNotAlterParameterConstraints.apply(OverridingMethodMustNotAlterParameterConstraints.java:24)
en org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.assertCorrectnessOfConfiguration(ExecutableMetaData.java:462)
en org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData$Builder.build(ExecutableMetaData.java:380)
en org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataBuilder$BuilderDelegate.build(BeanMetaDataBuilder.java:260)
en org.hibernate.validator.internal.metadata.aggregated.BeanMetaDataBuilder.build(BeanMetaDataBuilder.java:133)
en org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.createBeanMetaData(BeanMetaDataManagerImpl.java:206)
en org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl.getBeanMetaData(BeanMetaDataManagerImpl.java:165)
en org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:267)
en org.hibernate.validator.internal.engine.ValidatorImpl.validateParameters(ValidatorImpl.java:235)
Convertidor:
@Validated
public class StringToFooConverter implements Converter<string, foo=””> {
@Override
public Foo convert( @NotNull final String source ) {
return new Foo( source );
}
}
Configuración:
@Bean
public StringToFooConverter stringToFooConverter() {
return new StringToFooConverter();
}
¿Qué está mal?
EDITAR:
Agregar un ejemplo y lo que he intentado.
https://github.com/MelleD/spring-bean-validation-example
La interfaz y el DTO son generados por el generador de API abierta. Por lo tanto, actualmente no son modificables.</string,>
davy.ai
El mensaje de error indica que el método
StringToFooConverter#convert(String)
está redefiniendo la configuración deConverter#convert(Object)
, lo que viola la restricción de no alterar las restricciones de los parámetros al anular un método. Esto significa que la restricción@NotNull
en el parámetro deStringToFooConverter#convert(String)
está en conflicto con la configuración del métodoConverter#convert(Object)
.Para resolver este problema, puedes eliminar la anotación
@NotNull
en el parámetro y, en su lugar, agregar un validador paraFoo
en el métodoconvert
para garantizar que el objeto convertido sea válido. Esto se vería así:Luego, en su configuración, puedes inyectar el bean del validador y pasarlo al constructor del bean del convertidor:
Este enfoque garantizará que su convertidor se valide adecuadamente y cumpla con las reglas de validación definidas en su aplicación.</string,>