Bonjour.
J'ai une petite problématique sur la gestion d'une exception dans mon application web.
Dans ma JPA j'ai cela :
Du coup lorsque je souhaite rendre persistant mon objet et qu'il y a quelque chose de pas valide, hop j'ai le déclenchement d'une magnifique ValidationException (je l'ai fait hériter de RuntimeException).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 @PrePersist @PreUpdate private void validateData() { if (nom == null || "".equals(nom)) { throw new ValidationException("Nom invalide"); } if (prenom == null || "".equals(prenom)) { throw new ValidationException("Prénom invalide"); } if (adresse == null || "".equals(adresse)) { throw new ValidationException("Adresse invalide"); } if (codePostal == null) { throw new ValidationException("Code postal invalide"); } if (ville == null || "".equals(ville)) { throw new ValidationException("Ville invalide"); } if (telephone == null || "".equals(telephone)) { throw new ValidationException("Téléphone invalide"); } if (motDePasse == null || "".equals(motDePasse)) { throw new ValidationException("Mot de passe invalide"); } }
Tournons nous vers les EJB maintenant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class ValidationException extends RuntimeException { public ValidationException(String error) { System.out.println(error); } }
Voilà l'exception sera déclenchée ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Client client_ajout(String nom, String prenom, String adresse, Long codePostal, String ville, String telephone, String motDePasse) throws ValidationException { Client c = new Client(nom, prenom, adresse, codePostal, ville, telephone, motDePasse); em.persist(c); return c; }
Le problème c'est que je souhaite me servir de mon exception pour pouvoir afficher un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part em.persist(c);
Bon mon soucis c'est que mon exception je suis obligé de l'attraper dans le code précédent si je souhaite pouvoir afficher mes erreurs. En fait ce que je souhaite c'est que les "toto à la montagne" représentent mon erreur en disant par exemple "Nom invalide".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 try { client.client_ajout(request.getParameter("nom"), request.getParameter("prenom"), request.getParameter("adresse"), cp, request.getParameter("ville"), request.getParameter("telephone"), request.getParameter("motdepasse")); } catch (ValidationException e) { request.setAttribute("message", "toto à la montagne"); return "administration_client_edit"; } catch (EJBException e) { request.setAttribute("message", "toto à la montagne"); return "administration_client_edit"; }
Bref était-il possible à partir d'une erreur qui part de mon JPA pouvoir la retransmettre sous forme d'un String à la place de "toto à la montagne" ? Je peux traiter cela lorsque je reçois les données de la page, mais j'aurai aimé traité l'erreur dans la partie JPA...
Partager