Invoke validation de haricot
-
26-10-2019 - |
Question
J'utilise JSF 2, myfaces, mise en veille prolongée-validateur-4.1.0.Final.jar.
J'utilise hibernate-validateur pour valider les valeurs saisies sous forme.
public class Client {
@Persistent
@Pattern(regexp = "|.+@.+\\.[a-z]+", message = "Email format is invalid.")
private String email;
//getter
}
Je développe le module en vrac télécharger, où i analyser les données csv et créer des enregistrements de base de données.
...
try{
Client cl=new Client();
cl.setEmail("from_csv_data");
}catch( //validation failed
Comment puis-je réutiliser ici même validateur?
Set> constraintViolations = validator.validate (nc);
jette cette exception
SEVERE: Received 'java.lang.NoSuchMethodError' when invoking action listener '#{clientBean.bulkUpload}' for component 'j_idt86'
28 janvier 2011 08:35:39 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: java.lang.NoSuchMethodError: javax.persistence.Persistence.getPersistenceUtil () Ljavax / persistance / PersistenceUtil;
à
org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable (JPATraversableResolver.java:62)
J'ai essayé cette solution
J'ai mise en veille prolongée JPA-2.0-api-1.0.0.Final.jar, mise en veille prolongée-validateur-4.1.0.Final.jar
Ai-je besoin de tout autre pot pour faire ce travail?
La solution
Vous pouvez appeler le validateur manuellement avec quelque chose comme:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Client client = new Client();
Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
Autres conseils
Vous avez probablement un autre fichier jar JPA 2 incomplète sur le chemin de classe. Malheureusement, certaines versions incomplètes de ce pot se sont libérés à un moment donné (TopLink par exemple). Vérifiez votre classpath pour tout pot contenant des classes JPA. Voir aussi https://forum.hibernate.org/viewtopic.php?f=9&t = 999855