IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Listes liées dans une JSP - Java & Ajax


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut Listes liées dans une JSP - Java & Ajax
    Bonjour,

    J'ai affaire à un cas assez classique : deux listes déroulantes liées dans une page JSP. Le contenu de la deuxième est alimentée en fonction de la sélection de la première. Je cherche à faire cette alimentation en Ajax. En cherchant sur Internet, j'ai trouvé un exemple mais fait en PHP. J'ai donc cherché à l'adapter en java. Pourtant cela ne fonctionne pas. (Je suis débutant en Ajax)
    Dans mon cas, la première liste contient des plateformes, et en fonction de celle choisie, je souhaite alimenter la deuxième liste avec des catégories de produit.

    Voici mon code :

    page JSP : (j'utilise du JSTL dans mes JSP mais cela ne change rien pour mon problème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <select id="plateforme" name="plateforme" onchange="go();">
         <c:forEach items='${listePlateformes}' var='plateforme'>
         <option value="${plateforme.idPlateforme}">${plateforme.libelle} </option>
         </c:forEach>
    </select>
     
    <div id='categorieProduit' style='display:inline'>
       <select name="categorieProduit">
       </select>
    </div>
    Ajax :
    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
    function getXhr(){
        var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
    xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } 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;
    }
    
    /**
    * Méthode qui sera appelée sur le changement de valeur de la première liste
    */
    function go(){
    	var xhr = getXhr();
    	// On définit ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
    	// 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){
    		leselect = xhr.responseText;
    		// On se sert de innerHTML pour rajouter les options a la liste
    		document.getElementById('categorieProduit').innerHTML = leselect;
    	}
    }
    
    // JE PENSE QUE C EST ICI QU IL Y A UN PROBLEME CAR DANS L EXEMPLE, ON APPELLE UNE PAGE PHP MAIS LA ...
    xhr.open("POST","afficherCateg.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 l'auteur
    plateformeselectionnee = document.getElementById('plateforme');
    idPlateforme = plateformeselectionnee.options[plateformeselectionnee.selectedIndex].value;
    alert(idPlateforme); // RECUPERE LE BON ID DANS LA PREMIERE LISTE
    xhr.send("idPlateforme="+idPlateforme); //COMMENT LE RECUPERER DANS "afficherCateg.jsp" ? 
    }
    page afficherCateg.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
    	<%
    	
    	String id= request.getAttribute("idPlateforme").toString(); //ON LE RECUPERE DANS LA REQUEST ??
    		if(id!=null && id!=""){
    			int idPlateforme =  Integer.parseInt(id);	
    		        out.println("<select name='categorieProduit' ");
    		        List<CategorieProduitVO> lesCategProduitVO = FabriqueMetier.getInstance().getMetierCategorieProduit().listerCategorieProduitParIdPlateforme(idPlateforme);
    			for(CategorieProduitVO c : lesCategProduitVO){
    				out.println("<option value='"+c.getIdCateg()+"'>"+c.getLibelle()+"</option>");
    			}
    		
    		out.println("</select>");
    	        }
    	
    	%>
    Je n'ai aucun bug, mais rien ne s'affiche. Je sais juste que je passe bien dans ma fonction go().

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Aucune idée ? :/

    Svp

  3. #3
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Salut,

    Il te faut le récupérer la variable sur l'instance request :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String id = request.getParameter("idPlateforme");
    Juste pour info, les "attributs" de request que tu utilises, ne servent pas à récupérer ce qui est transmis par l'URL (que ce soit GET ou POST) mais à poser / récupérer temporairement des variables pour le traitement de la request.

Discussions similaires

  1. Listes Déroulantes liées dans une JSP
    Par andyajram dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/05/2015, 19h51
  2. Inserer variable liste liée dans une base de données
    Par cobra85 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/05/2014, 18h29
  3. Récupération d'un index d'une liste affichée dans une jsp
    Par KristofNancy dans le forum Struts 1
    Réponses: 3
    Dernier message: 06/07/2010, 10h41
  4. Liste déroulante dans une JSP
    Par Vincinho dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 17/03/2009, 16h22
  5. Liste Box dans une jsp
    Par lil_k123 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/08/2007, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo