0

J'ai le même problème que le gars de fil a this. Plus précisément que je reçois l'erreur suivante, en essayant d'injecter un haricot dans mon validateur personnalisé qui implémente l'interface CustomValidator (il est un NPE lorsque vous accédez à la fève que je voulais injecter):injection de dépendances dans JSR-303 ConstraintValidator

javax.validation.ValidationException: HV000028: Unexpected exception during isValid call. 
at org.hibernate.validator.internal.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:294) 
at org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:164) 
at org.hibernate.validator.internal.engine.ConstraintTree.validateConstraints(ConstraintTree.java:125) 
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:86) 

...

causée par: java.lang.NullPointerException

vous avez une solution vous pour cela? Peut-être un exemple? Parce que j'ai essayé les solutions proposées sur l'autre thread et rien n'a fonctionné.

Toute aide est appréciée. Merci.

+0

Poster exemple de votre validateur avec le 'Causé by' stack-trace. Les exceptions de niveau supérieur ne sont généralement pas si intéressantes. Incluez également votre configuration de validateur (bean XML ou @ @ Configuration) –

+0

Il a été provoqué par un NPE lors de l'accès aux données du bean que je voulais injecter dans le validateur. J'utilise le validateur par défaut, donc je n'ai pas de configuration XML spécifique. Voici comment j'appelle le validateur ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validateur validateur = factory.getValidator(); Définir > constraintViolations = validator.validate (objet); – TheRock3t

+0

Vous ne devriez probablement pas utiliser 'Validation'. Juste '@ Autowire'' ValidatorFactory' si vous voulez créer votre validateur manuellement. Je vais mettre cela dans une réponse réelle :). –

Répondre

0

Vous ne devez pas créer l'usine de validateur sur votre propre (Validation.buildDefaultValidatorFactory()) si vous souhaitez utiliser les validateurs de contraintes à base Spring.

Vous devez laisser Spring autowire usine correcte à votre haricot:

@Controller 
public class MyController { 

    @Autowired 
    private ValidatorFactory validatorFactory; 

    // ... handler methods 

} 
+0

Ok. J'ai déclaré un bean LocalValidatorFactoryBean dans le fichier xml. Je câble comme vous le suggérez mais je reçois toujours NPE lors de l'appel de la méthode getValidator() sur le bean filaire Validator validator = validatorFactory.getValidator(); (Voici le NPE) Set > constraintViolations = validator.validate (objet); – TheRock3t

+0

Pavel Horal, une suggestion? – TheRock3t

+0

Hm ... Si l'on considère le code source, il est impossible d'obtenir 'null' de' LocalValidatorFactoryBean # getValidator' lorsqu'on utilise hibernate-validator. Pouvez-vous partager votre configuration? –