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 :

[JSP] Création dynamique de n lignes de formulaire


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [JSP] Création dynamique de n lignes de formulaire
    Bonjour,
    après une bonne aprem de recherches je me décide à poster...
    j'aimerais effectuer la chose suivante :
    • je met en place un formulaire d'ajout de catégorie (il s'agit de catégories de taches). Pour chaque catégorie qu'il crée, l'utilisateur peut ajouter des champs personnalisés. Il défini dans un premier temps le nombre de champs qu'il veut ajouter.
    • A partir de ce nombre n, j'aimerais créer dynamiquement un formulaire composé de n "lignes" d'<input type="text">: 1 pour le nom du champs, 1 pour la valeur par défaut...
    • Lors de la soumission du formulaire, dans mon Action struts, je récupèrerais les différentes valeurs décrivant les champs sous forme de tableau
    En gros ce que je souhaite obtenir comme code html juste en connaissant le nombre n (mettons n = 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table>
       <tr>
          <td><input type="text" name="fieldName[0]"></td>
          <td><input type="text" name="fieldDefault[0]"></td>
       </tr>
       <tr>
          <td><input type="text" name="fieldName[1]"></td>
          <td><input type="text" name="fieldDefault[1]"></td>
       </tr>
    </table>
    Une idée précise de comment faire ?
    Merci par avance

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Voici une solution qui, je pense, devrait marcher.

    Tu crées une classe Java, que je vais appeler Field, avec pour attribut fieldName et fieldDefault, les getters et setters correspondant et un constructeur qui appelle setFieldName et setFieldDefault.

    Ensuite, dans l'Action, que j'appelerais InitFieldAction, qui récupère le nombre n, tu crées une ArrayList, que j'appelerais FieldList, de n beans Field, en initialisant les attributs fieldName et fieldDefault à blanc via le constructeur de la classe Field.

    Puis, tu crées une ActionForm qui a pour attribut l'ArrayList fieldList avec getter et setter.
    Dans l'Action InitFieldAction, tu mets l'ArrayList dans le scope via le setter de l'ActionForm.

    Et dans la jsp, tu utilises le tag nested:iterate qui se code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <nested:iterate property="fieldList">
       <nested:text property="fieldName"/>
       <nested:text property="fieldDefault"/>
    </nested:iterate>
    ça te générera le code html suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table>
       <tr>
          <td><input type="text" name="fieldList[0].fieldName" value=""></td>
          <td><input type="text" name="fieldList[0].fieldDefault" value=""></td>
       </tr>
       <tr>
          <td><input type="text" name="fieldList[1].fieldName" value=""></td>
          <td><input type="text" name="fieldList[1].fieldDefault" value=""></td>
       </tr>
    </table>
    Et dans l'Action exécutée au submit de formulaire, tu récupères l'ArrayList de beans Field via le getter de l'ActionForm.

    Dis-moi si c'est assez clair, si ça correspond bien à ton besoin et si tu as besoin de plus d'infos et de bouts de code pour la mise en oeuvre.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    aha ! une solution qui semble se profiler
    par contre la partie " Dans l'Action InitFieldAction, tu mets l'ArrayList dans le scope via le setter de l'ActionForm." je vois pas comment faire...
    sachant que mon action struts (InitFieldAction) retourne un findForward("customfields") qui correspond à ma page jsp contenant le nested:iterate...
    J'ai oublié une action?
    voici pour plus de clarté un extrait de mon struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <action path="/submitNewCat" input="/newCat.do" validate="true" name="newCatForm" type="com.enki.application.actions.NewCatExecuteAction">
                <forward name="success" path="/WEB-INF/jsps/newCatOk.jsp"/>
                <forward name="failure" path="/newCat.do"/>
                <forward name="customfields" path="/WEB-INF/jsps/newCatCustom.jsp"/>
            </action>
     
            <action path="/submitNewCatWithCustom" input="/WEB-INF/jsps/newCatCustom.jsp" validate="true" name="newCatCustomForm" type="com.enki.application.actions.NewCatCustomExecuteAction">
                <forward name="success" path="/WEB-INF/jsps/newCatOk.jsp"/>
                <forward name="failure" path="/newCat.do"/>
            </action>

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Imaginons que ton ActionForm de name newCatForm s'appelle NewCatForm.
    Donc, dans la méthode execute de l'Action d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NewCatForm newCatForm = (NewCatForm) form ;
    newCatForm.setFieldList(tonArrayList) ;
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Yep ca marche maintenant
    Merci beaucoup !

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Cool !
    Moi qui pensais ne pas avoir été assez précise dans mes explications.
    Bravo, tu as assuré.

    N'oublie pas le tag
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    J'ai besoin d'un bout de code SVP. J'ai le même besoin.

    Merci

Discussions similaires

  1. Création dynamique de page php sur formulaire JavaScript
    Par Darkyl dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/05/2013, 15h37
  2. [2.x] Création dynamique de champs dans un formulaire
    Par rafleboss dans le forum Symfony
    Réponses: 13
    Dernier message: 08/11/2011, 10h35
  3. Création dynamique des lignes d'un PopupMenu
    Par bionicleman dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2008, 08h43
  4. Réponses: 5
    Dernier message: 05/06/2007, 10h17
  5. Réponses: 8
    Dernier message: 06/07/2006, 08h19

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