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 :

Formulaire dynamique / DynaActionForm


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut Formulaire dynamique / DynaActionForm
    Bonjour,

    Je chercher à créer dynamiquement un formulaire (composé de cases à cocher). J'ai cherché un peu partout sur le net et, apparemment, il faut procéder au moyen d'une boucle et d'un indexage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html:form action="/traitement" method="post">
    <c:forEach var="element" items="${elements}">
    <html:checkbox property="eleves" indexed="true">
    </c:forEach>
    </html:form>
    Je ne souhaite pas utiliser le tag logic:iterate car il nécessite, si j'ai bien compris, d'encapsuler la collection au sein d'un POJO supplémentaire.

    Ceci me génère le code html suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="org.apache.struts.taglib.html.BEAN[0].eleves" value="on" />
    <input type="checkbox" name="org.apache.struts.taglib.html.BEAN[1].eleves" value="on" />
    ...
    Toutefois, pour la récupération des données, je ne trouve d'informations que concernant les ActionForm. Je souhaite utiliser une classe héritant de DynaActionForm.
    Je ne sais pas comment le déclarer dans le struts-config et pour l'instant je me suis contenté de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form-bean name="Formulaire" type="pack.Formulaire">
    	<form-property name="eleves" type="java.util.ArrayList" />
    </form-bean>
    Dans la classe Formulaire, j'accède, à priori, à une propriété "élèves" de type ArrayList (par d'erreur sur le transtypage). Toutefois, celle-ci est vide.

    J'ai cherché sur google, mais tout ce que j'ai lu ne m'a donné qu'une information partielle (soit la partie jsp, soit la partie struts-config, soit la partie bean) mais pas la marche à suivre permettant de créer un formulaire dynamique avec DynaActionForm. Quelqu'un la connaîtrait-elle ? (question de pure forme puisque je penses que oui ^^).

    Merci.

  2. #2
    Expert confirmé

    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
    Par défaut
    Il faut utiliser le tag html:multibox, la propriété de l'ActionForm doit être de type String[] et il faut l'initialiser.

    Donc, dans le struts-config.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form-bean name="Formulaire" type="pack.Formulaire">
    	<form-property name="eleves" type="java.lang.String[]" initial="{}" />
    </form-bean>
    et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html:form action="/traitement" method="post">
       <c:forEach var="element" items="${elements}">
          <html:multibox property="eleves">
             <bean:write name="element"/>
          </html:multibox>
       </c:forEach>
    </html:form>
    Pour info, tu peux très bien utiliser le tag logic:iterate sans créer d'objet supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html:form action="/traitement" method="post">
       <logic:iterate id="element" name="elements">
          <html:multibox property="eleves">
             <bean:write name="element"/>
          </html:multibox>
       </logic:iterate>
    </html:form>
    Sinon, je ne vois pas bien l'intérêt d'utiliser une DynaActionForm puisqu'apparemment, tu crées quand même une classe Formulaire.
    Pour ma part, le seul avantage qu'il y ait à utiliser une DynaActionForm, c'est justement d'éviter d'écrire une classe Java pour le formulaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Ah, en effet c'est tout bête, les multibox fonctionnent parfaitement.
    Visiblement j'avais mal compris l'utilisation de logic:iterate, ton exemple est nickel.
    Le DynaActionForm c'est pour m'éviter d'avoir à écrire les accesseurs.

    Merci en tout cas ^^.

  4. #4
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par Revolux Voir le message
    Le DynaActionForm c'est pour m'éviter d'avoir à écrire les accesseurs.
    Enfin, si tu utilises un IDE, il le fait pour toi.

    Personnellement, je préfère utiliser les ActionForm car je trouve dommage de polluer le struts-config.xml en y définissant les propriétés des formulaires.

    De plus, si tu modifies le nom d'une propriété dans le struts-config.xml et que tu oublies de le modifier dans le get, tu auras une erreur à l'exécution et non à la compilation.

    Et enfin, il faut savoir que la réflexion Java est utilisée pour construire une DynaActionForm, ce qui doit avoir un certain coût à l'exécution, surtout quand les formulaires ont beaucoup de propriétés.

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

Discussions similaires

  1. [Formulaire dynamique][DynaActionForm]-Tutoriel Serge Tahe
    Par AbdouPoulou dans le forum Struts 1
    Réponses: 5
    Dernier message: 03/07/2009, 16h30
  2. [JSF] Implémentation d'un formulaire dynamique
    Par Fleep dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2005, 19h00
  3. pb access formulaire dynamique
    Par jibouze dans le forum IHM
    Réponses: 3
    Dernier message: 12/01/2005, 09h39
  4. formulaire dynamique
    Par shirya dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/10/2004, 16h13
  5. [struts]Formulaire dynamique
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 28/05/2004, 16h35

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