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 :

Problème récupération des valeurs dans un formulaire


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Problème récupération des valeurs dans un formulaire
    Bonjour,
    j'ai une liste d'objet que je doit afficher et une zone de texte à coté de chaque objet. Ce qui fait que j'ai le même nom pour toutes les zones de texte qui sont ajoutées selon le nombre des objet de la liste.
    Comment faire pour récupérer toutes les valeurs qu'on a saisi dans les zones de texte.
    Merci.

  2. #2
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour

    je ne suis pas sûr d'avoir tout compris mais en tout cas vous pouvez toujours essayer de récupérer les valeurs en générant des id différents pour chaque champs textes au lieu de se baser sur les noms
    ou bien générer les noms de manière dynamique ...

    Essayer de poster une partie du code de la JSP et du struts-config.xml ?
    Ce sera plus pratique pour vous aider

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse,
    La page jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <logic:iterate id="a" name="df" property="attributs">
        <html:hidden name="a" property="idAttribute"/>
         <tr>
         <td><bean:write name="a" property="name"/></td>
         <td><html:text styleClass="text1" name="df" styleId="value" property="value"/></td>
         </tr>
    </logic:iterate>
    attributs est une liste d'objets Attribut(id,name,..)
    Mais la je dois sauvegarder les données dans une autre table. ValeursAttribut(id,idAttribut,value);
    La zone de texte value ne récupère que la première valeur saisie.

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Je sais qu'il faut travailler avec indexId.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:iterate id="a" name="df" property="attributs" indexId="idx">
    	<html:hidden name="a" property="idAttribute"/>
    	<tr>
    	  <td><bean:write name="a" property="name"/></td>
    	  <td><html:text styleClass="text1" name="df" styleId="value" property="value" indexed="true"/></td>
    	</tr>
    </logic:iterate>
    mais je ne sais pas comment récupérer la valeur de chaque ligne.

    Merci.

  5. #5
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par plop5 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:iterate id="a" name="df" property="attributs" indexId="idx">
        <html:hidden name="a" property="idAttribute"/>
        <tr>
          <td><bean:write name="a" property="name"/></td>
          <td><html:text styleClass="text1" name="df" styleId="value<%=idx%>" property="value" indexed="true"/></td>
        </tr>
    </logic:iterate>
    tu pourrais rajouter ton idx dans l'id de ton champs text et dans ton action tu fais une boucle sur le nombre d'éléments à récupérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getAttribute("value" +idx);//

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getAttribute("value" +idx);
    Mais il retourne null0,null1...
    La valeur de la zone de texte retourne null, normal parce que dans le form bean, elle est nommée value mais indexId ajoute un index au nom.

    dans l'action:
    je récupère la valeur par le getter de la propriété value:
    df.getValue();

  7. #7
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    c'est normal
    le problème est que comme tu ne connais pas à l'avance le nombre d'élément je ne suis pas sûr que ton modèle soit approprié

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Alors vous n'avez pas une autre solution à me proposer pour récupérer les valeurs?
    Merci

  9. #9
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    est-ce que vous avez essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getParameter("value" + idx);
    ?

  10. #10
    Membre actif Avatar de Jacobian
    Inscrit en
    Février 2008
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 425
    Points : 245
    Points
    245
    Par défaut
    dans ta liste d'objet tu déclare un attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .....
    private String textSaisie;
    ....
    //getter and setter
    ....
    et dans la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:text  name="textSaisie" property="textSaisie" /></td>

  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("value" + idx);
    Si je transmet la valeur comme paramètre, une seule valeur sera récupérée.

    Merci Jacobian pour ta réponse.
    Mais comme je l'ai expliqué en haut, j'ai deux tables:
    Attribut(id,name,description)
    ValeursAttribut(idV,Attribut,value,idDemande)
    pour chaque demande, les attributs peuvent avoir des valeurs différentes.

  12. #12
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    tu peux récupérer tous les paramètres avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    request.getParameterMap();
    et faire un filtre sur les clés de la map qui commencent par value
    De cette façon tu les récupéreras tous

  13. #13
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    C'est bon j'ai trouvé une solution qui marche en utilisant javascript.

    La page 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
     
    <html:hidden name="df" property="value" styleId="valeur"/>
     
    <logic:notEmpty name="df" property="attributs">
             <logic:iterate id="a" name="df" property="attributs" indexId="idx">
    		  <html:hidden name="a" property="idAttribute"/>
    	          <tr>
    	             	<td><bean:write name="a" property="name"/></td>
    		        <td><html:text name="df" styleId="valeur" property="value" indexed="true"/></td>        		
    		   </tr>
              </logic:iterate>
    </logic:notEmpty>
     
    <html:submit value="Ajouter" onclick="valu();" styleClass="button"></html:submit>
    La fonction javascript:
    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
    function valu(){
    	var values=[],val,l,k,i=0;
    	while(true){
    		attribut = 'df['+i+'].value';
    		k=document.forms[0].elements[attribut];
    		if( typeof(k) !='undefined'){
    			val=document.forms[0].elements[attribut].value;
    			values.push(val);
    			i++;
    		}else{
    			break;
    		}
     
    	}
            document.getElementById("valeur").value=values;
    	document.getElementById("demande").submit();
    Je récupère la valeur de chaque élément de la boucle par son nom dont la forme est df[0].value , df[1].value..., je la met dans une variable et je l'ajoute au tableau values qui est sous forme d'une chaine de caractères contenant les valeurs séparées par virgule. je remet le tableau dans la propriété value.
    dans l'action je récupère la valeur de la propriété value. et je fais un split sur la propriété pour récupérer toutes les valeurs.
    Merci pour tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/10/2014, 16h05
  2. [MySQL] récupération des valeurs d'un formulaire d'une page dans une autre page
    Par CSI2012 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/02/2013, 13h43
  3. Réponses: 4
    Dernier message: 09/10/2011, 13h22
  4. [debutant]sauvegarde des valeurs dans un formulaire
    Par pimousse_cerise dans le forum JSF
    Réponses: 7
    Dernier message: 15/06/2007, 09h56
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

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