Bonjour,
j'ai actuellement deux jsp , l'une dans laquelle il y a deux listes déroulantes liiées via ajax , et l'autre avec 4 checkbox.
Ce que je souhaiterais mettre en place c'est un controle de saisie sur ces listes et checkbox notamment lorque j'utilisateur clique que un bouton sans avoir selectionné d'item.
Pour que ce soit un peu plus parlant voici mon code:
fonctions JS de ma jsp avec les listes:
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 function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ // Firefox et autres xhr = new XMLHttpRequest(); //alert('new XMLHttpRequest'); } else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); //alert('new activeXObject'); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } function go() { //alert('valeur de la liste :'+ //document.getElementById('structures').options[document.getElementById('structures').selectedIndex].text+' id='+ //document.getElementById('structures').options[document.getElementById('structures').selectedIndex].value); var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ //alert('debug0 ='+xhr.readyState); // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 /* && xhr.status == 200*/){ //alert('debug1'); leselect = xhr.responseText; //alert('leselect:'+leselect); // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('utilisateurs').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","/intranet/integration/demande/ListeUtilisateurs.jsp",true); //xhr.open("POST","/intranet/integration/demande/formulaireDemande.jsp",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de la structure sel = document.getElementById('structures'); idstruc = sel.options[sel.selectedIndex].value; //alert('idStruc = '+idstruc); xhr.send("idStructure="+idstruc); } function loginUtilisateur(){ //var codeUtil = document.getElementById('selectUtil').options[document.getElementById('selectUtil').selectedIndex].value; <%-- <% String idUtilisateur= codeUtil; Iterator monIt = GetList.getUtilisateurList(idUtilisateur).iterator(); Utilisateur util= (Utilisateur)monIt.next(); %> --%> alert('Vous etes maintenant loggé '+document.getElementById('selectUtil').options[document.getElementById('selectUtil').selectedIndex].text); }
code lié aux listes déroulantes liées:
fonction JS de ma jsp checkbox:
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 <!-- partie d'identification --> <table border cellspacing="10px"> <tr > <td > <select name="structures" id="structures" onChange="go()"> <option value="vide">Liste structures</option> <% Iterator it1 = GetList.getStructureList().iterator(); String s=null; while(it1.hasNext()){ Structure struct =(Structure)it1.next(); s=struct.getNom(); %> <option value="<%=struct.getId()%>"> <%=s%></option> <%}%> </select> </td> <td> <div id='utilisateurs' style='display:inline'> <select name="utilisateurs" id="selectUtil" > <option value="vide">Choisir une structure</option> </select> </div> </td> </tr> </table> <br><br> <div class="UI_EDITOR_TEXTFIELD"> <hr size="1" noshade="noshade" /> <input type="submit" class='formButton mainButton' value="Se connecter" onClick="loginUtilisateur()"/> </div>
code de ma jsp checkbox:
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 function verifSelection(){ cpt=0; if(document.getElementById('chckLog').checked) { cpt++; } if(document.getElementById('chckMat').checked) { cpt++; } if(document.getElementById('chckMut').checked) { cpt++; } if(document.getElementById('chckDep').checked) { cpt++; } alert('cpt= '+cpt); if(cpt=0){ alert('/!\ Vous devez sélectionner au moins 1 catégorie !'); }
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 <body > <h1 class="boTitle"> Formulaire de demande d'installation de logiciel </h1> <form action="" method="POST"> <h4 align="right"><%=utilisateurLog.getNom()%> <%=utilisateurLog.getPrenom()%></h4> <h4 align="right"> <input type="submit" name="deco" value="Deconnexion" /> </h4> <!-- Onglet formulaire --> <div class="tab-pane" id="mainTab"> <div class="tab-page"> <table cellspacing='3' cellpadding='3' border='0' class='FicheIndividuelle' width="100%" height="400px> <tr> <td width="33%"> </td> <td> <br><hr size="1" noshade="noshade" /><br> <table border align="center" > <tr> <td> Liste des actions possibles : </td> </tr> <tr> <td><input type="checkbox" id="chckLog" name="chckLog" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> installation logicielle </input></td> </tr> <tr> <td><input type="checkbox" id="chckMat" name="chckMat" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> installation matérielle </input></td> </tr> <tr> <td><input type="checkbox" id="chckMut" name="chckMut" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> Mutation </input></td> </tr> <tr> <td><input type="checkbox" id="chckDep" name="chckDep" onclick="//document.getElementById('validerChoix').style.visibility='visible'"> Départ </input></td> </tr> </table> <div class="UI_EDITOR_TEXTFIELD" align=center> <hr size="1" noshade="noshade" /> <input type="submit" class='formButton mainButton' id="validerChoix" value="Valider mes choix" onclick="verifSelection()"/> </div> </td> <td width="33%"> </td> </tr> </table> </div> </div> </form> </body>
la servlet:
Actuellement j'ai essayé de faire le controle en JS quand on clique sur le bouton mais le soucis c'est malgré ma fenetre alert, il lance la servlet apres.
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 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { logger.debug("FormulaireDemandeServlet.doPost : " + request.getParameter("action")); HttpSession session; session = request.getSession(); if(request.getParameter("utilisateurs")!=null){ BigDecimal idUtilisateur = new BigDecimal(request.getParameter("utilisateurs")); //System.out.println(request.getParameter("utilisateurs")); Utilisateur util = UtilisateurDAO.getInstance().findById(idUtilisateur); session.setAttribute("utilisateurLog", util); getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemandeSelection.jsp").forward(request, response); //response.sendRedirect(JSP_PATH_DEMANDE+"formulaireDemandeSelection.jsp"); } if(request.getParameter("deco")!=null){ session.removeAttribute("utilisateurLog"); getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemande.jsp").forward(request, response); } if(request.getParameter("validerChoix")!=null){ if(request.getParameter("chckLog")!=null){ session.setAttribute("demandeLogicielle", true); } if(request.getParameter("chckMat")!=null){ session.setAttribute("demandeMaterielle", true); } if(request.getParameter("chckMut")!=null){ session.setAttribute("demandeMutation", true); } if(request.getParameter("chckDep")!=null){ session.setAttribute("demandeDepart", true); } getServletContext().getRequestDispatcher(JSP_PATH_DEMANDE+"formulaireDemandeLog.jsp").forward(request, response); } }
Je me demande donc comment controler et si je dois le faire au niveau de ma servlet ou en JS.
Merci d'avance.
Partager