Bonjour,
j'ai un soucis dans mon projet à savoir : c'est un formulaire, quand je renseigne un champ et que je clique sur le bouton de recherche, cela vide mon champ automatiquement, HORS, je voudrais au contraire que cela réaffiche le contenu du champ même après avoir cliqué sur le boutton. ( plus pratique en cas de modification de la recherche...)
Voici ma servlet :
Voici ma JSP :
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 package org.xxx.servlets; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.xxx.beans.Articles; import org.xxx.dao.*; import org.xxx.forms.RechercheArticleForm; /** * Servlet implementation class AfficheArticles */ //@WebServlet("/AfficheArticles") public class AfficheArticles extends HttpServlet { private static final long serialVersionUID = 1L; public static final String CONF_DAO_FACTORY = "daofactory"; public static final String ATT_ARTICLES = "article"; public static final String ATT_ARTICLES_FAMILLE = "articleFamille"; public static final String ATT_ARTICLES_FOURNISSEUR = "articleFournisseur"; public static final String ATT_ARTICLES_CLASSEMENT1 = "articleClassement1"; public static final String ATT_ARTICLES_CLASSEMENT2 = "articleClassement2"; public static final String ATT_FORM = "FormArticleRecherche"; // public static final String ATT_FORM_RECHERCHE_FAMILLE = "formArticleRechercheFamille"; // public static final String ATT_FORM_RECHERCHE_FOURNISSEUR = "formArticleRechercheFournisseur"; private static final String VUE = "/WEB-INF/AfficheArticles.jsp"; private ArticleDao articleDao; /** * @see HttpServlet#HttpServlet() */ public AfficheArticles() { super(); // TODO Auto-generated constructor stub } public void init() throws ServletException { /* Récupération d'une instance de notre DAO Utilisateur */ this.articleDao = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getArticlesDao(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //************************** recherche famille article (chargement menu déroulant)************************************** RechercheArticleForm formRechercheArticle = new RechercheArticleForm(articleDao); List <Articles> articleFamille = formRechercheArticle.rechercheListArticleFamille(request); List <Articles> articleFournisseur = formRechercheArticle.rechercheListArticleFournisseur(request); request.setAttribute("ATT_ARTICLES_FAMILLE", articleFamille); request.setAttribute("ATT_ARTICLES_FOURNISSEUR", articleFournisseur); request.setAttribute("ATT_FORM_RECHERCHE_FAMILLE", formRechercheArticle); this.getServletContext().getRequestDispatcher(VUE).forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*************************** recherche article par CodeArticle et Libellé *********************************************/ RechercheArticleForm formRechercheArticle = new RechercheArticleForm(articleDao); List<Articles> article = formRechercheArticle.rechercheListArticle(request); /*************************** recherche famille article (chargement menu déroulant)*************************************/ //RechercheArticleForm formRechercheArticleFamille = new RechercheArticleForm(articleDao); List <Articles> articleFamille = formRechercheArticle.rechercheListArticleFamille(request); /*************************** recherche fournisseur article (chargement menu déroulant)*********************************/ //RechercheArticleForm formRechercheArticleFournisseur = new RechercheArticleForm(articleDao); List <Articles> articleFournisseur = formRechercheArticle.rechercheListArticleFournisseur(request); /*************************** recherche article par classement *********************************************************/ List<Articles> articleClassement1 = formRechercheArticle.rechercheListArticle(request); List<Articles> articleClassement2 = formRechercheArticle.rechercheListArticle(request); request.setAttribute(ATT_ARTICLES_CLASSEMENT1, articleClassement1); request.setAttribute(ATT_ARTICLES_CLASSEMENT2, articleClassement2); System.out.println("variable ATT_Articles_Classement1Servlet :"+ articleClassement1); System.out.println("variable ATT_Articles_Classement2Servlet :"+ articleClassement2); /*************************** Chargement des attributs recherche par famille *******************************************/ //request.setAttribute("ATT_FORM_RECHERCHE_FAMILLE", formRechercheArticleFamille); request.setAttribute("ATT_ARTICLES_FAMILLE", articleFamille); /*************************** Chargement des attributs recherche par fournisseur ***************************************/ //request.setAttribute("ATT_FORM_RECHERCHE_FOURNISSEUR", formRechercheArticleFournisseur); request.setAttribute("ATT_ARTICLES_FOURNISSEUR", articleFournisseur); /*************************** Chargement des attributs recherche par CodeArticle et libellé*****************************/ request.setAttribute(ATT_ARTICLES, article); request.setAttribute(ATT_FORM, formRechercheArticle); this.getServletContext().getRequestDispatcher( VUE ).forward( request, response ); } }
Et voici mon POJO
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Affiche Articles</title> </head> <body> <div id="conteneur"> <div id="haut"></div> <div id="menuGauche"></div> <div id="cadreAction"> <form name="FormArticleRecherche" action="AfficheArticles" method="post"> <fieldset> <legend>Fiches Article</legend> <p> <!-- Probleme par exemple ici pour la recup du contenu du champ une fois validée --> Code Article : <input type="text" name="CodeArticle" value="<c:out value="${ATT_FORM.CHAMP_CODE_ARTICLE}"/>" size="6" /> Désignation : <input type="text" name="DesignationArticle" value="<c:out value="${ATT_ARTICLES.libelleArticle}"/>" size="20" /> </p> <p> Famille : <select name="FamilleArticle"> <option>Aucun</option> <c:forEach var="resultatFamilleArticle" begin="1" items="${requestScope['ATT_ARTICLES_FAMILLE']}"> <option>${resultatFamilleArticle.numFamilleArticle}</option> </c:forEach> </select> Fournisseur : <select name="FournisseurArticle"> <option>Aucun</option> <c:forEach var="resultatFournisseurArticle" items="${requestScope['ATT_ARTICLES_FOURNISSEUR']}"> <option>${resultatFournisseurArticle.numFournisseurArticle} : ${resultatFournisseurArticle.nomFournisseurArticle}</option> </c:forEach> </select> </p> <p> Classement 1 : <input type="text" name="ClassementArticle" size="20"> Classement 2 : <input type="text" name="ClassementArticleBis" size="20"> <span class="erreur">${ATT_FORM.erreurs['CHAMP_CODE_ARTICLE']}</span> <input type="submit" name="rechercherArticle" value="Rechercher"> </p> </fieldset> </form> <br> <table name="resultatArticle" border="1"> <tr> <td>Code</td> <td>Désignation</td> <td>Complément 1</td> <td>Complément 2</td> <td>Complément 3</td> </tr> <c:forEach var="resultatNumArticle" items="${requestScope['article']}"> <tr> <td>${resultatNumArticle.numArticle}</td> <td>${resultatNumArticle.libelleArticle }</td> <td>${resultatNumArticle.libelleArticle1 }</td> <td>${resultatNumArticle.libelleArticle2 }</td> <td>${resultatNumArticle.libelleArticle3 }</td> </tr> </c:forEach> </table> </div> <div id="menuHorizontale"></div> <div id="bas"></div> </div> </body> </html>
Et enfin me objet métier form :
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 package org.xxx.beans; /* * POJO Articles */ public class Articles { private String numArticle; // code article recherche private String libelleArticle; //designation Article recherche private String libelleArticle1; //Complément 1 resultat dans le tableau private String libelleArticle2; //Complément 2 resultat dans le tableau private String libelleArticle3; //Complément 3 resultat dans le tableau private String numFamilleArticle; // famille article private String nomFournisseurArticle; // nom fournisseur article private String numFournisseurArticle; // num fournisseur article recherche private String classementArticle1; //classement 1 recherche private String classementArticle2; //classement 2 recherche //private Integer numMagasin; private String typeArticle; private double prixVenteArticle; public String getNumArticle() { return numArticle; } public void setNumArticle(String numArticle) { this.numArticle = numArticle; } public String getLibelleArticle() { return libelleArticle; } public void setLibelleArticle(String libelleArticle) { this.libelleArticle = libelleArticle; } public String getTypeArticle() { return typeArticle; } public void setTypeArticle(String typeArticle) { this.typeArticle = typeArticle; } public double getPrixVenteArticle() { return prixVenteArticle; } public void setPrixVenteArticle(double prixVenteArticle) { this.prixVenteArticle = prixVenteArticle; } public String getLibelleArticle1() { return libelleArticle1; } public void setLibelleArticle1(String libelleArticle1) { this.libelleArticle1 = libelleArticle1; } public String getLibelleArticle2() { return libelleArticle2; } public void setLibelleArticle2(String libelleArticle2) { this.libelleArticle2 = libelleArticle2; } public String getLibelleArticle3() { return libelleArticle3; } public void setLibelleArticle3(String libelleArticle3) { this.libelleArticle3 = libelleArticle3; } public String getNumFamilleArticle() { return numFamilleArticle; } public void setNumFamilleArticle(String numFamilleArticle) { this.numFamilleArticle = numFamilleArticle; } public String getNomFournisseurArticle() { return nomFournisseurArticle; } public void setNomFournisseurArticle(String fournisseurArticle) { this.nomFournisseurArticle = fournisseurArticle; } public String getNumFournisseurArticle() { return numFournisseurArticle; } public void setNumFournisseurArticle(String s) { this.numFournisseurArticle = s; } public String getClassementArticle1() { return classementArticle1; } public void setClassementArticle1(String classementArticle1) { this.classementArticle1 = classementArticle1; } public String getClassementArticle2() { return classementArticle2; } public void setClassementArticle2(String classementArticle2) { this.classementArticle2 = classementArticle2; } }
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186 package org.xxx.forms; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.xxx.beans.Articles; import org.xxx.dao.ArticleDao; public class RechercheArticleForm { private Map<String, String> erreurs = new HashMap<String, String>(); //recuperation du Dao article private ArticleDao articleDao; private static final String CHAMP_CODE_ARTICLE = "CodeArticle"; private static final String CHAMP_DESIGNATION_ARTICLE = "DesignationArticle"; // famille article pour recherche via menu deroulant private static final String CHAMP_FAMILLE_ARTICLE = "FamilleArticle"; // fournisseur article pour recherche via menu deroulant private static final String CHAMP_FOURNISSEUR_ARTICLE = "FournisseurArticle"; // champ classement1 private static final String CHAMP_CLASSEMENT1_ARTICLE = "ClassementArticle"; // champ classement2 private static final String CHAMP_CLASSEMENT2_ARTICLE = "ClassementArticleBis"; //declaration de variable CHAMP private String codeArticle = null; private String designationArticle = null; private String familleArticle = null; private String fournisseurArticle = null; private String classement1Article = null; private String classement2Article = null; public RechercheArticleForm( ArticleDao articleDao) { // TODO Auto-generated constructor stub this.articleDao = articleDao; } public List<Articles> rechercheListArticle(HttpServletRequest request) { // TODO Auto-generated method stub codeArticle = getValeurChamp( request, CHAMP_CODE_ARTICLE ); designationArticle = getValeurChamp( request, CHAMP_DESIGNATION_ARTICLE ); familleArticle = getValeurChamp(request, CHAMP_FAMILLE_ARTICLE); // menu deroulant fournisseurArticle = getValeurChamp(request, CHAMP_FOURNISSEUR_ARTICLE);// menu deroulant classement1Article = getValeurChamp(request, CHAMP_CLASSEMENT1_ARTICLE); classement2Article = getValeurChamp(request, CHAMP_CLASSEMENT2_ARTICLE); Articles article = new Articles(); //Validation des champs sinon affichage d'erreurs try { validationChampsRenseigne(codeArticle, designationArticle, familleArticle, fournisseurArticle, classement1Article, classement2Article); } catch ( Exception e ) { setErreur( CHAMP_CODE_ARTICLE, e.getMessage() ); } //verification des champs si ils sont vides, on fait rien sinon on UPPER if(classement1Article == null && fournisseurArticle.contains("Aucun") && classement2Article == null && codeArticle != null && designationArticle == null && familleArticle.contains("Aucun")){ System.out.println("je passe dans recherche par code article !"); article.setNumArticle("%"+codeArticle.toUpperCase()+"%"); List<Articles> listArticle = articleDao.trouverListArticles(article.getNumArticle()); return listArticle; } if(classement1Article == null && fournisseurArticle.contains("Aucun") && classement2Article == null && codeArticle == null && designationArticle != null && familleArticle.contains("Aucun")){ System.out.println("je passe dans recherche par libelle !"); article.setLibelleArticle("%"+designationArticle.toUpperCase()+"%"); List<Articles> listArticle = articleDao.trouverListArticlesLibelle(article.getLibelleArticle()); return listArticle; } if(classement1Article == null && classement2Article == null && !familleArticle.contains("Aucun") && codeArticle == null && designationArticle == null && fournisseurArticle.contains("Aucun")){ //menu deroulant article.setNumFamilleArticle(familleArticle); List<Articles> listArticle = articleDao.trouverListArticlesFamille(article.getNumFamilleArticle()); return listArticle; } if(classement1Article == null && classement2Article == null && !fournisseurArticle.contains("Aucun") && codeArticle == null && designationArticle == null && familleArticle.contains("Aucun")){ System.out.println("Je passe dans recherche par fournisseur !"); String[] fournisseurArticleSplit = fournisseurArticle.split(" "); article.setNumFournisseurArticle(fournisseurArticleSplit[0]); List<Articles> listArticle = articleDao.trouverListArticlesFournisseur(article.getNumFournisseurArticle()); return listArticle; } if(classement1Article != null && classement2Article == null && fournisseurArticle.contains("Aucun") && codeArticle == null && designationArticle == null && familleArticle.contains("Aucun")){ System.out.println("je passe dans recherche par classement1"); article.setClassementArticle1("%"+classement1Article.toUpperCase()+"%"); List<Articles> listArticle = articleDao.trouverListArticlesClassement1(article.getClassementArticle1()); if(listArticle.isEmpty()){ System.out.println("la listeArticleParclassement1 est vide"); }else{ System.out.println("listeArticleParClassement1 : "+listArticle.get(0)); } return listArticle; } if(classement2Article != null && classement1Article == null && fournisseurArticle.contains("Aucun") && codeArticle == null && designationArticle == null && familleArticle.contains("Aucun")){ System.out.println("je passe dans recherche par classement2"); article.setClassementArticle2("%"+classement2Article.toUpperCase()+"%"); List<Articles> listArticle = articleDao.trouverListArticlesClassement2(article.getClassementArticle2()); if(listArticle.isEmpty()){ System.out.println("la listeArticleParclassement2 est vide"); }else{ System.out.println("listeArticleParClassement2 : "+listArticle.get(0)); } return listArticle; } if(designationArticle != null && !fournisseurArticle.contains("Aucun") && classement2Article == null && classement1Article == null && codeArticle == null && familleArticle.contains("Aucun")){ System.out.println("JE PASSE dans recherche par libelle et fournisseur !"); article.setLibelleArticle("%"+designationArticle.toUpperCase()+"%"); String[] fournisseurArticleSplit = fournisseurArticle.split(" "); article.setNumFournisseurArticle(fournisseurArticleSplit[0]); List<Articles> listArticle = articleDao.trouverListArticleslibelleEtFournisseur(article.getLibelleArticle(),article.getNumFournisseurArticle()); return listArticle; } if(codeArticle != null && !fournisseurArticle.contains("Aucun") && designationArticle == null && classement2Article == null && classement1Article == null && familleArticle.contains("Aucun")){ System.out.println("JE PASSE recherche par codeArticle et fournisseur !"); article.setNumArticle("%"+codeArticle.toUpperCase()+"%"); String[] fournisseurArticleSplit = fournisseurArticle.split(" "); article.setNumFournisseurArticle(fournisseurArticleSplit[0]); List<Articles> listArticle = articleDao.trouverListArticlesCodeArticleEtFournisseur(article.getNumArticle(),article.getNumFournisseurArticle()); return listArticle; } return null; } //methode de validation des champs si tous vide. private void validationChampsRenseigne(String codeArticle2,String designationArticle2, String familleArticle2,String fournisseurArticle2, String classement1Article2,String classement2Article2) throws Exception { if(classement1Article == null && fournisseurArticle.contains("Aucun") && classement2Article == null && codeArticle == null && designationArticle == null && familleArticle.contains("Aucun")){ throw new Exception( "Merci de saisir au moins un critère de recherche." ); } } //methode de chargement du menu deroulant famille article public List<Articles> rechercheListArticleFamille(HttpServletRequest request){ List<Articles> listArticleFamille = articleDao.chargementListArticlesFamille(); return listArticleFamille; } //methode de chargement du menu deroulant fournisseur article public List<Articles> rechercheListArticleFournisseur(HttpServletRequest request){ List<Articles> listArticleFournisseur = articleDao.chargementListArticlesFournisseur(); return listArticleFournisseur; } /* * Méthode utilitaire qui retourne null si un champ est vide, et son contenu * sinon. */ private static String getValeurChamp( HttpServletRequest request, String nomChamp ) { String valeur = request.getParameter( nomChamp ); if ( valeur == null || valeur.trim().length() == 0 ) { return null; } else { return valeur.trim(); } } /* * Ajoute un message correspondant au champ spécifié à la map des erreurs. */ private void setErreur( String champ, String message ) { erreurs.put( champ, message ); } public Map<String, String> getErreurs() { return erreurs; } public void setErreurs(Map<String, String> erreurs) { this.erreurs = erreurs; } }
Partager