Bonjour à tous,
Je rencontre actuellement une difficulté qui me pourrit l'existence.
Je me suis mis récemment à la technologie Java EE et après lu de long en large le tuto de Coyote, j'ai décider de bosser sur un cas pratique.
Voilà lorsque j'essaie d'insérer un enregistrement dans la base de données (postgresql), elle n'est pas effectuée et aucune erreur ne s'affiche dans la console.
J'utilise le serveur d'application GlassFish Application Server 3.1 Servlet 3.0.
Ci dessous les codes de mes servlets et de mes JSP.
Merci de bien vouloir m'aider à localiser où se trouve(nt) le(s) erreur(s).
Code de l'entité Ville
Code du DAO VilleDao
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package com.entities; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="ville") public class Ville { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id_ville") private Long idVille; @Column(name="libelle_ville") private String libelleVille; @ManyToOne @JoinColumn(name="id_departement") private Departement departement; public Long getIdVille() { return idVille; } public void setIdVille(Long idVille) { this.idVille = idVille; } public String getLibelleVille() { return libelleVille; } public void setLibelleVille(String libelleVille) { this.libelleVille = libelleVille; } public Departement getDepartement() { return departement; } public void setDepartement(Departement departement) { this.departement = departement; } @Override public String toString() { return "Ville [idVille=" + idVille + ", libelleVille=" + libelleVille + ", departement=" + departement + "]"; } }
Code de l'objet métier VilleForm
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 package com.dao; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; import javax.persistence.TypedQuery; import com.entities.Ville; import com.entities.Departement; @Stateless public class VilleDao { private static final String JPQL_SELECTIONNER_VILLE = "SELECT v FROM Ville v ORDER BY v.libelleVille ASC"; private static final String JPQL_SELECTIONNER_VILLE_PAR_LIBELLE = "SELECT v FROM Ville v WHERE v.libelleVille = :libelleVille"; private static final String JPQL_MODIFIER_VILLE = "UPDATE Ville v SET v.departement = :departement, v.libelleVille = :libelleVille WHERE v.idVille = :idVille"; private static final String PARAM_DEPARTEMENT = "departement"; private static final String PARAM_ID_VILLE = "idVille"; private static final String PARAM_LIBELLE_VILLE = "libelleVille"; @PersistenceContext(unitName="bdd_gestion_objets_voles_ou_perdus_PU") private EntityManager em; public void creer(Ville ville) throws DaoException{ try{ em.persist(ville); }catch(Exception e){ throw new DaoException(e); } } public List<Ville> selectionner() throws DaoException{ try{ TypedQuery<Ville> query = em.createQuery(JPQL_SELECTIONNER_VILLE, Ville.class); return query.getResultList(); }catch(Exception e){ throw new DaoException(e); } } public Ville selectionner(Long idVille) throws DaoException{ try{ return em.find(Ville.class, idVille); }catch(Exception e){ throw new DaoException(e); } } public Ville selectionner(String libelleVille) throws DaoException{ Ville ville = null; Query query = em.createQuery(JPQL_SELECTIONNER_VILLE_PAR_LIBELLE); query.setParameter(PARAM_LIBELLE_VILLE, libelleVille); try{ ville = (Ville)query.getSingleResult(); }catch(NoResultException e){ return null; }catch(Exception e){ throw new DaoException(e); } return ville; } public void modifier(Long idVille, String libelleVille, Departement departement) throws DaoException{ try{ Query query = em.createQuery(JPQL_MODIFIER_VILLE); query.setParameter(PARAM_DEPARTEMENT, departement); query.setParameter(PARAM_ID_VILLE, idVille); query.setParameter(PARAM_LIBELLE_VILLE, libelleVille); }catch(Exception e){ throw new DaoException(e); } } public void supprimer(Ville ville) throws DaoException{ try{ em.remove(em.merge(ville)); }catch(Exception e){ throw new DaoException(e); } } }
Code de la servlet EnregistrerVille.java
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 package com.forms; import java.util.HashMap; import java.util.Map; import javax.ejb.EJB; import javax.servlet.http.HttpServletRequest; import com.dao.DepartementDao; import com.dao.VilleDao; import com.entities.Departement; import com.entities.Ville; public class VilleForm { private static final String CHAMP_ID_VILLE = "idVills"; private static final String CHAMP_LIBELLE_VILLE = "libelleVille"; private static final String COMBO_BOX_ID_DEPARTEMENT = "idDepartement"; private String resultat; private Map<String, String> erreur = new HashMap<String, String>(); @EJB private VilleDao villeDao; @EJB private DepartementDao departementDao; public VilleForm(VilleDao villeDao, DepartementDao departementDao){ this.villeDao = villeDao; this.departementDao = departementDao; } public String getResultat() { return resultat; } public void setResultat(String resultat) { this.resultat = resultat; } public Map<String, String> getErreur() { return erreur; } public void setErreur(String nomChamp, String message) { erreur.put(nomChamp, message); } public Ville EnregistrerVille(HttpServletRequest request){ String paramLibelleVille = getValeurChamp(request, CHAMP_LIBELLE_VILLE); String paramIdDepartement = getValeurChamp(request, COMBO_BOX_ID_DEPARTEMENT); Ville ville = new Ville(); try{ validationChampLibelleVille(paramLibelleVille); }catch(FormValidationException e){ setErreur(CHAMP_LIBELLE_VILLE, e.getMessage()); } ville.setLibelleVille(paramLibelleVille); try{ validationComboBoxDepartement(paramIdDepartement); }catch(FormValidationException e){ setErreur(COMBO_BOX_ID_DEPARTEMENT, e.getMessage()); } Departement departement = departementDao.selectionner(paramIdDepartement); ville.setDepartement(departement); if(erreur.isEmpty()){ villeDao.creer(ville); resultat="Ville enregistrée avec succès."; }else{ resultat="Echec d'enregistrement de la ville."; } return ville; } public Ville ModifierVille(HttpServletRequest request){ String paramIdVille = getValeurChamp(request, CHAMP_ID_VILLE); String paramLibelleVille = getValeurChamp(request, CHAMP_LIBELLE_VILLE); String paramIdDepartement = getValeurChamp(request, COMBO_BOX_ID_DEPARTEMENT); Ville ville = new Ville(); try{ validationChampLibelleVille(paramLibelleVille); }catch(FormValidationException e){ setErreur(CHAMP_LIBELLE_VILLE, e.getMessage()); } ville.setLibelleVille(paramLibelleVille); try{ validationComboBoxDepartement(paramIdDepartement); }catch(FormValidationException e){ setErreur(COMBO_BOX_ID_DEPARTEMENT, e.getMessage()); } ville.setDepartement(departementDao.selectionner(paramIdDepartement)); if(erreur.isEmpty()){ villeDao.modifier(Long.parseLong(paramIdVille),paramLibelleVille, departementDao.selectionner(paramIdDepartement)); resultat="Ville modifiée avec succès."; }else{ resultat="Echec de la modification de la ville."; } return ville; } private String getValeurChamp(HttpServletRequest request, String nomChamp){ String valeurChamp = request.getParameter(nomChamp); if(valeurChamp == null || valeurChamp.trim().length() == 0){ return null; }else{ return valeurChamp.trim(); } } private void validationChampLibelleVille(String libelleVille) throws FormValidationException{ if(libelleVille == null || libelleVille.trim().length() == 0){ throw new FormValidationException("Erreur : veuillez saisir le libellé de la ville."); }else if(villeDao.selectionner(libelleVille) != null){ throw new FormValidationException("Erreur : La ville saisie existe déjà dans la base."); } } private void validationComboBoxDepartement(String departement) throws FormValidationException{ if(departement == null || departement.trim().length() == 0){ throw new FormValidationException("Erreur : veuillez saisir le libellé de la ville."); } } }
Code de la JSP enregistrerville.jps
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 package com.servlets; import java.io.IOException; import java.util.List; import javax.ejb.EJB; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import com.dao.DepartementDao; import com.dao.VilleDao; import com.entities.Departement; import com.entities.Ville; import com.forms.VilleForm; @WebServlet("/enregistrerville") public class EnregistrerVille extends HttpServlet { private static final long serialVersionUID = -8823747358928721105L; private static final String ATTRIBUT_FORM = "form"; private static final String ATTRIBUT_DEPARTEMENT = "departement"; private static final String ATTRIBUT_VILLE = "ville"; private static final String VUE_AFFICHER_VILLE = "/afficherville"; private static final String VUE_ENREGISTRER_VILLE = "/WEB-INF/enregistrerville.jsp"; @EJB private VilleDao villeDao; @EJB private DepartementDao departementDao; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ List<Departement> listeDepartement = departementDao.selectionner(); request.setAttribute(ATTRIBUT_DEPARTEMENT, listeDepartement); this.getServletContext().getRequestDispatcher(VUE_ENREGISTRER_VILLE).forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ VilleForm form = new VilleForm(villeDao, departementDao); Ville ville = form.EnregistrerVille(request); List<Departement> listeDepartement = departementDao.selectionner(); request.setAttribute(ATTRIBUT_DEPARTEMENT, listeDepartement); request.setAttribute(ATTRIBUT_FORM, form); request.setAttribute(ATTRIBUT_VILLE, ville); if(form.getErreur().isEmpty()){ response.sendRedirect(request.getContextPath()+VUE_AFFICHER_VILLE); }else{ this.getServletContext().getRequestDispatcher(VUE_ENREGISTRER_VILLE).forward(request, response); } } }
Code de l'objet FormValidationException
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 <%@ page pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Enregistrer Ville</title> <link rel="stylesheet" type="text/css" href="<c:url value="/inc/style.css"/>"/> </head> <body> <form action="enregistrerville" method="post"> <label for="libelleVille">Libellé <span class="requis">*</span></label> <input type="text" id="libelleVille" name="libelleVille" value="<c:out value="${ville.libelleVille}"/>" size="50" maxlength="250" /><span class="erreur"><c:out value="${form.erreur['libelleVille']}"/></span><br/> <label for="departement">Département <span class="requis">*</span></label> <select id="departement" name="departement"> <c:forEach items="${departement}" var="vardepartement"> <option value="<c:out value="${vardepartement.idDepartement}"/>"><c:out value="${vardepartement.libelleDepartement}"/></option> </c:forEach> </select><span class="erreur"><c:out value="${form.erreur['departement']}"/></span><br/> <input type="submit" name="btnEnregistrer" value="Enregistrer" class="sansLabel"> </form> <p class="${empty form.erreur ? 'succes' : 'erreur'}"><c:out value="${form.resultat}"/></p> <p><c:out value="${ville.departement}"/></p> </body> </html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 package com.forms; public class FormValidationException extends RuntimeException { private static final long serialVersionUID = -3658562644472863641L; public FormValidationException(String message){ super(message); } }
Partager