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

Struts 1 Java Discussion :

remplir une combo suite à un évènement ajax avec dwr


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Points : 95
    Points
    95
    Par défaut remplir une combo suite à un évènement ajax avec dwr
    Bonjour, je suis confronté à un problème dont je suis sur vous avez la solution

    J'utilise une première combo sur laquel un évènement onChange() est associé. Quand on choisi un élément, cela appelle une fonction ajax grace au framework DWR. En retour cela me retourne un tableau dont j'aimerais me servir pour remplir une deuxième combo. Mais voila, je ne sais pas comment faire, avec struts et la balise html:select, pour que cette collection soit utilisée pour remplir une deuxième combo... j'ai fais pas mal de recherche sur le net mais je ne trouve rien qui m'apporte une solution...

    voila mon code :

    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib uri="/WEB-INF/tags/struts-logic" prefix="logic"%>
    <%@ taglib uri="/WEB-INF/tags/struts-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/tags/struts-bean" prefix="bean"%>
    <html>
    <head>
     
    <script src='http://localhost:8080/ThinClient/dwr/interface/Tranche.js'></script>
     
    <script src='http://localhost:8080/ThinClient/dwr/engine.js'></script>
    <script src='http://localhost:8080/ThinClient/dwr/util.js'></script>
     
    <script type="text/javascript">
    function updateTranches() {
      var site = dwr.util.getValue("site");
      Tranche.tranches(site, function(data) {
        dwr.util.setValue("resultat", data);
      });
     
    }
    </script>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
     
    <html:form action="choix.do">
    	<html:select property="site" onchange="updateTranches()">
    		<html:options collection="sites" property="id" labelName="Site Id" />
    	</html:select>
     
    	<!-- Construire dynamiquement la liste des tranches grace à la collection retournée... -->
    <html:select property="tranche">
    	<html:options name="resultat" collection="????ici je dois mettre la collection retourné par DWR mais comment faire ????" property="id"
    			labelName="Tranche Id" />
    	</html:select>
     
    	<html:submit value="Send"></html:submit>
    </html:form>
     
    </body>
    </html>
    Donc en fait, mon problème c'est que la fonction dwr.util.setValue("resultat", data); cherche une propriéré value dans le tag html:select...

    je suis coincé je sais plus comment faire ...

    j'avais pensé utilisé un champ caché (ce que j'ai testé) pour récupérer la collection, mais après le problème reste le meme, comment itérer dynamiquement sur cette collection pour créer une combo ?

    please help me

    merci à tous

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    vous pouvez nous envoyer votre action

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Points : 95
    Points
    95
    Par défaut
    Bonjour, merci de vous y interessé

    voila mon action :

    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
     
     
    package org.getahead.dwrdemo.simpletext;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class ChoixAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
     
    		Choix choixForm = (Choix) form;
     
    		String site = choixForm.getSite();
     
    		String tranche = choixForm.getTranche();
     
    		System.out.println(site);
    		System.out.println(tranche);
     
    		return mapping.findForward("success");
    	}
    }

  4. #4
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    j'ai été confronté au même problème et je poste donc ici la solution si quelqu'un d'autre se pose aussi la question.

    Pour alimenter un <select>, il ne faut pas utiliser la méthode dwr.util.setValue car celle-ci permet seulement d'indiquer l'élement que l'on souhaite sélectionner dans la liste. Il faut utiliser la méthode dwr.util.addOptions.

    Pour plus de détails :
    http://getahead.org/dwr/browser/addoptions
    http://getahead.org/dwr/browser/lists

  5. #5
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    Pour alimenter un <select>, il ne faut pas utiliser la méthode dwr.util.setValue car celle-ci permet seulement d'indiquer l'élement que l'on souhaite sélectionner dans la liste. Il faut utiliser la méthode dwr.util.addOptions.
    Et dans le cas d'un <html:multibox> ?

  6. #6
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    je me permet de poster ici puisque j'ai exactement le même problème help une semaine entière que je cherche sans resultat

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 76
    Points : 80
    Points
    80
    Par défaut dwr.util.addOptions et jQuery("#optionName option").each(function(index)
    Bonjour,
    Le post date un peu, mais j'ai eu à résoudre un problème qui lui ressemble

    Contexte:
    Ma servlet me retourne une liste d'objets du type "DefaultKeyValue" {Key, Value}, dans la liste déroulante je devais afficher certains éléments de cette liste avec une couleur différente ou en GRAS et ceci en fonction de leur état.


    Avant la modif j'avais dans 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
     
    var updateOptionsListe =  function() {
     
        var id = 'selectName';
        var idElt = $('#'+id);
     
     
    monServiceDWR.populateOptionsListe(function(data){
     
                dwr.util.removeAllOptions(id);
                dwr.util.addOptions( id, data, 'key', 'value');
                dwr.util.setValue(id, idElt);
     
               });
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <select name="selectName">
     
    <c:forEach items="${listeElements}" var="element">
    <option value="${element.key}">${element.value}</option>
    </c:forEach>
     
    </select>

    J'ai modifié le type des objets contenu dans la liste de retour, j'ai créé une petite classe DefaultKeyValueAvecCssInfos par exemple qui étend DefaultKeyValue.

    j'ai rajouté un membre cssFontWeight a cette classe dérivée et l'information est renvoyé avec le reste.


    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
     
    var updateOptionsListe =  function() {
     
        var id = 'selectName';
        var idElt = $('#'+id);
     
    monServiceDWR.populateOptionsListe(function(data){
     
                dwr.util.removeAllOptions(id);
                dwr.util.addOptions( id, data, 'key', 'value');
                dwr.util.setValue(id, idElt);
     
                jQuery("#optionName option").each(function(index){
                	var index = $(this).attr('index');
                	if(data!=null){
    	            	if(data[index] != null){
    						var key  = data[index].key;
    						var value  = data[index].value;
    						var cssFontWeight  = data[index].cssFontWeight;
    						$(this).css('font-weight',cssFontWeight);
    					}
                	}
                });

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select name="selectName">
    <c:forEach items="${listeElements}" var="element">
    <option cssStyle="font-weight:${element.cssFontWeight};" value="${element.key}">${element.value}</option>
    </c:forEach>
     
    </select>
    un lien utile : http://directwebremoting.org/dwr/doc...til/lists.html

Discussions similaires

  1. Remplir une combo avec fichier ini
    Par PrincessKC dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/03/2010, 22h53
  2. Remplir une Combo avec données venant de 2 colonnes
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/01/2009, 09h34
  3. Fermer une fenêtre suite à un évènement
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 40
    Dernier message: 07/02/2007, 17h05
  4. Réponses: 8
    Dernier message: 11/06/2006, 12h23
  5. Modification d'une combo suite à la saisi dans un champ texte
    Par GabriHell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/05/2006, 17h48

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