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 :

[Struts-Layout][Ajax] Charger un tableau en fonction d'une liste déroulante


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut [Struts-Layout][Ajax] Charger un tableau en fonction d'une liste déroulante
    Bonjour,
    Je veux lier une liste afficher dans un tableau <layout:collection> à une zone de liste <layout:select>. J'utilise pour cela AJAX car je ne veux pas faire un submit() de mon formulaire.
    Voici le code de ma JSP de ma zone de liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <layout:select key="RcGroupefonctionFB.TNUM_LIST_RCMODULE"
    			property="TNUM_LIST_RCMODULE" style="width:200px"
    			onchange="AJAXReloadFonction('/gainde/rcGroupefonctionACT.do?reqCode=listFonctionByModule&amp;module='+document.getElementById('TNUM_LIST_RCMODULE').value);"
    			layoutId="TNUM_LIST_RCMODULE">
    			<layout:options collection="listModule" property="value"
    				labelProperty="label"></layout:options>
    		</layout:select>
    Le code JSP de mon tableau
    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
     
    <layout:swap property="rccodefonction,rccodefonction"
    			formProperty="ids1,ids2" selectedStyleClass="FORMSWAP">
    			<layout:collection name="list1" styleClass="FORM2">
    				<layout:collectionItem title="list1.codefonction"
    					property="rccodefonction" />
    				<layout:collectionItem title="list1.libellefonction"
    					property="rclibfonction" style="text-align:left;" />
    			</layout:collection>
    			<layout:collection name="list2" styleClass="FORM2">
    				<layout:collectionItem title="list1.codefonction"
    					property="rccodefonction" />
    				<layout:collectionItem title="list1.libellefonction"
    					property="rclibfonction" style="text-align:left;" />
    			</layout:collection>
    		</layout:swap>
    A noter qu'ici c'est un <layout:swap> qui est concerné et que je ne veux interagir qu'avec le premier tableau de ce swap.

    La fonction 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
     
    function AJAXReloadFonction(url,nameOfFormToPost) {
    		req = new ActiveXObject("Microsoft.XMLHTTP");
    		if (req) {
    			req.onreadystatechange = function () {
    					if (req.readyState == 4) {
    						if (req.status == 200) {
    							var tr = ""+req.responseText;
    							document.getElementById('').value=tr;
    						}
    					}
    				};
    			req.open("POST", url, true);
    			req.send();
    		}
    	}
    }
    Sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('').value=tr;
    , je ne sais pas quel est l'id de mon premier tableau de mon objet <layout:swap>. J'avais mis au départ
    stdLayoutSwap0
    , mais ça ne marchait pas.

    maintenant je passe à mon ActionForm :
    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
    public void listFonctionByModule(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws TwreException, IOException {
    		ActionErrors errors = new ActionErrors();
     
    		ReferencesCommunsCmd referencesCommunsCmd = new ReferencesCommunsCmd();
    		RcGroupefonctionFB rcGroupefonctionfb = (RcGroupefonctionFB) form;
    		GroupefonctionVO groupefonctionvo = new GroupefonctionVO();
    		String module = request.getParameter("module");
    		PrintWriter out = response.getWriter();
    		ListeFonc listeFonc = new ListeFonc();
    		Vector liste = new Vector();
     
    		ArrayList list1 = new ArrayList();
     
    		try {
    			response.setContentType("text/html");
    			// récupérer la liste des fonctionnalités
    			liste = referencesCommunsCmd
    					.getListeFonctionnalitesByModule(module);
    			System.out.println("RcGroupefonctionACT.listFonctionByModule()"
    					+ liste.size());
    			for (int i = 0; i < liste.size(); i++) {
    				FonctionnalitesVO foncvo = new FonctionnalitesVO();
    				foncvo = (FonctionnalitesVO) liste.get(i);
    				System.out.println("RcGroupefonctionACT.listFonctionByModule()"
    						+ foncvo.getRccodefonction());
    				list1.add(foncvo);
    			}
    			out.println(list1);
    			out.flush();
    			request.setAttribute("list1", list1);
    			rcGroupefonctionfb.setIds1(new String[list1.size()]);
    		} catch (TwreException e) {
    			errors.add("name", new ActionError(e.getMessage()));
    		} finally {
    			if (!errors.isEmpty())
    				saveErrors(request, errors);
    		}
    	}
    Voilà j'espère avoir été assez précis.
    Je récapitule ma question, je veux charger un tableau (FONCTIONNALITES, contenu dans un swap) à l'aide d'une zone de liste (MODULE). Et tout ça en AJAX.

    Merci d'avance
    6ril 4 ever

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Les deux System.out que j'ai placé m'affichent les bonnes valeurs à savoir la taille de mon vecteur résultant de ma requête ainsi que la liste des éléments...
    Donc mon tableau "list1" est bien rempli.
    La question c'est comment le passer via ma fonction ajax au premier tableau de mon <layout:swap>???
    6ril 4 ever

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Salut,
    J'ai essayé de tourner la question dans tous les sens mais je ne trouve pas toujours pas la brèche. Je ne souhaite pas passer par du javascript, car au submit() de mon formulaire, il se peut que j'ai d'autres champs qui soient vident à ce moment là et donc ça fausse un peu mon code après. J'ai un peu parcouru le code du swap.js, j'arrive pas trop à comprendre comment il remplit les listes en fait.
    Autre chose, dans mon actionForm, j'ai mon ArrayList list1, que je récupère dans ma fonction AJAX ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tr = ""+req.responseText;
    . Lorsque je fait un alert de cette variable "tr" j'obtiens ceci :
    FonctionnalitesVO@43a1eb53,FonctionnalitesVO@43a1fa32, etc..
    . Ce sont différentes instances que je veux récupérer et afficher dans mon tableau. comment récupérer chacune des valeurs des ces objets et non leur référence?
    Merci
    6ril 4 ever

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2014, 16h20
  2. Réponses: 2
    Dernier message: 06/11/2012, 11h44
  3. [MySQL] Affichage tableau en fonction d'une liste déroulante
    Par twa4ever dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2009, 15h25
  4. mise à jour de champs en fonction d'une liste déroulante
    Par kifouillou dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 09/04/2008, 16h37
  5. Comment rappeler une fonction dans une liste déroulante
    Par strogos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/05/2005, 23h54

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