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 :

iteration de html:text et récup value


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut iteration de html:text et récup value
    je suis désolé mais même en faisant la recherche sur le forum et en regardant les diverses exemples, je ne trouve pas la solution à mon problème. je ne récupere toujours pas toutes les valeurs de ma generation de html:text dynamique!!

    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
     
    //je commence par recuperer la liste de mon formulaire
    <bean:define id="liste" name="formParam" property="listparams"  type="java.util.List" />
     
    <html:form styleId="valparam" action="/validparam" >
     
     
      <logic:iterate id="parametre" name="liste" type="*****.ParametrePopup"> 
     
            bean:write name="parametre" property="libparam" />
     
          <html:text  name="parametre" indexed="true" property="valp" value="<%=parametre.getValdefaut()%>" />
     
      </logic:iterate 
     
    </html:form>
    Dans la plupart des posts du forums, a chaque fois dans le <logic:iterate>
    , pour l'attribut name vous renseignez "formbean", c'est -à-dire la clé du form, or moi c'est une liste que j'ai dans mon logic:iterate pour le name, en conséquence, je ne peux donc pas mettre property=hasmap comme je l'ai vu souvent, sinon il me sortira une belle erreur, car il ne trouvera pas la proprieté hasmap dans le bean List.
    Bref sur ce coup là jsuis un peu flingué et je sais plus trop quoi faire malgré tous les posts à ce sujet que j'ai pu lire!


    Ce qu'il faut savoir c'est que moi j'envoie une list(listparams) avec mon bean form ,ensuite je récupere avec le bean-define.
    Dans mon form j'ai declarer une HashMap pour recuperer les valeurs des champs de text, mais comment faire le lien entre ma hashMap et mon formulaire, etant donné que je ne peux pas mettre property="nom hashmap" dans mon logic:iterate


  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    J'ai déjà répondu à ce problème il y a quelques jours.

    Pour résumer :

    Pour le post de tes valeurs, Struts ne tient pas compte, dans ton iterate, du fait que "parametre" est un item de "liste" (contrairement à l'affichage). Ce qui est logique en fait, car Struts, quand il traite des données entrantes, ne se base que sur les "name" et les "value" de tes champs (pour faire simple), et pas du tout sur le code Struts de ta JSP.
    Il fait donc, quand il voit un paramètre de name "parametre[0].valp" (c'est ce qui doit être généré dans ton HTML actuellement), un appel du genre "formParam.getParametre(0).setValp(taValeur)". Garde bien ça en mémoire dans ton dev.

    Donc, dans ton form bean, tu as besoin d'une méthode getParametre(int index) du genre (le setter setParametre(int index, Object value) n'est apparemment pas utile, en tout cas pour ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public ParametrePopup getParametre(int index) {
       while (liste.size() <= index) {
          liste.add( new ParametrePopup() );
       }
       return (ParametrePopup)liste.get(index);
    }
    C'est un peu à l'arrach', je connais pas la vraie bonne façon de faire, mais j'utilise ca actuellement pour un problème similaire, et ça marche.

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    moi j'avait ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public ParametrePopup getValparam(int i)
    	{
    	    return (ParametrePopup) this.listparams.get(i);
    	}
     
     public void setValparam(int i,ParametrePopup paramp)
    	{
    	    this.listparams.set(i,paramp) ;
    	}
    et devine quoi quand je fais un test en faisant un System.out dans ma classe Action pour savoir si je recupere bien ma valeur du form, et bien il me renvoie les valeurs qui sont inseres en base et ne tient pas compte des nouvelles valeurs entrés par l'utilisateur???


    ta méthode permet de reinitialiser la lsit avec les valeurs de l'utilisateur ,jme trompe?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Non, ce n'est pas ce que tu fais, l'accesseur doit être sur la propriété indexée, c'est-à-dire ici "parametre", et non "valparam".
    Relis mon post et regarde si ton HTML est OK.

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    mince alors, j'en reviens pas!!!
    Donc maintenant j'ai juste a changer le header de ma methode en "getParametre" au lieu de getValparam"?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Oui, mais ca ne suffira que si la taille de ta liste ne change pas et que ton form est en session. Sinon ton form sera réinitialisé au post de ta requête, et Struts essaiera à un moment ou un autre d'accéder à un item qui n'existe pas (xxx.get(5) sur une liste de 3 par exemple) => exception.
    Il faut donc gérer aussi l'instanciation des items, par exemple comme fait dans mon exemple.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Citation Envoyé par mnemonic78
    ta méthode permet de reinitialiser la lsit avec les valeurs de l'utilisateur ,jme trompe?
    Ma méthode renvoie un objet ParametrePopup, qu'il crée et place d'abord dans la liste si l'objet d'index "index" n'existe pas dans la liste.
    Struts utilise ensuite cet objet pour faire un parametrePopup.setValp(xxx) dessus. Et remplit ainsi ta liste de ParametrePopup avec les valeurs de l'utilisateur.

    P.S. : Attention, j'ai édité mon premier post tout-à-l'heure, je teste la taille de la liste à présent et non le get(xxx) == null ).

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

Discussions similaires

  1. html text et value
    Par mon_pseudo dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/01/2012, 04h51
  2. Réponses: 0
    Dernier message: 10/02/2010, 19h55
  3. html:text dans un logic:iterate
    Par ptitom1381 dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/11/2008, 13h11
  4. logic:iterate imbriques + html:text
    Par wanted972 dans le forum Struts 1
    Réponses: 10
    Dernier message: 12/10/2007, 10h44
  5. [Débutant][taglibs] "value" sur un <html:text> ?
    Par ghohm dans le forum Struts 1
    Réponses: 10
    Dernier message: 01/06/2007, 16h50

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