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 :

Collection dans un formulaire


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Par défaut Collection dans un formulaire
    Bonjour

    Je n'arrive pas a afficher dans une JSP un formulaire vide (de type <html:form>) dont les champs correspondent à un bean formulaire (ValidatorForm).

    Ce bean formulaire contient des champs String et une collection d'objets B.

    Petit extrait du bean formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class TotoForm extends machinTrucValidatorForm {
     
            private String champ1;
    	private String champ2;
    	private Collection <B> objetB;
    .
    .
    getters / setters
    .
    .
    }
    Un petit extrait de la JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html:form action="monAction.do?methode=methDeMonAction" StyleId="totoForm">
    <html:text property="champ1" />
    <html:text property="champ2" />
    <html:text property="objetB.champDeMonObjetB"
    Je pensais que cela marchais mais non.. Alors comment faites vous pour dire a votre formulaire que tel champ de la JSP correspond a un champ contenu dans un objet collection lui mm appartenant au TotoForm.

    Merci de votre aide...

  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
    Si tu veux afficher la collection d'objets et permettre la modification des champs de cette collection, il faut utiliser le tag nested:iterate pour itérer sur la collection et le tag nested:text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <nested:iterate property="objetB">
       <nested:text property="champDeMonObjetB"/>
    </nested:iterate>

  3. #3
    Membre confirmé
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Par défaut
    Merci pour la réponse, je sens que le but est proche !
    Cependant lors du chargement de la JSP une exception survient me disant qu'il ne connait pas la collection (objetB) de mon totoForm.

    Message d'erreur dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    09:57:01,727 INFO  [STDOUT] 26/09/2008 09:57:01,712 ERROR InsertTag             - ServletException in '/jsp/documents/maPage.jsp': javax.servlet.jsp.JspException: No collection found
    org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/documents/maPage.jsp at line 51
     
    48: 	</TR>
    49: 	<!-- Mode Creation -->
    50: 		<logic:present name="isModeCreation" scope="request">
    51: 			<nested:iterate property="ObjetB">
    52: 				<TR class="row1">
    .
    .
    .
    Histoire d'etre sur que je m'y prend bien voici un bout de ma JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <nested:iterate property="objetB">
            <nested:text property="champDeMonObjetB" size="4" maxlength="4" disabled="false"></nested:text>
    .
    .
    .
    <TD align="center" class="colMilieu">
    	<nested:select property="objetB" style="width:100px;">
    		<nested:optionsCollection property="champ1DeMonObjetB"  value="valeurListePasseeParAction" label="labelListePasseeParAction" name="nomListePasseeParAction"></nested:optionsCollection>
    	</nested:select>										
    </TD>
    </tr>
    </nested:iterate>

  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
    Dans ton ActionForm, objetB n'est pas initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private Collection <B> objetB = new ArrayList<B>() ;

  5. #5
    Membre confirmé
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Par défaut
    Merci pour tout, ca marche nikel ! Je ne connaissais pas cette librairie nested.. ca va me plaire

  6. #6
    Membre confirmé
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Par défaut
    Petit changement qui a son importance... donc je ré-ouvre le topic

    En fait ma JSP propose d'ajouter ou de supprimer des lignes dynamiquement (Javascript) mais le soucis c'est que quand je valide le formulaire le nombre de lignes (objetB) renvoyé par la JSP ne correspond pas forcement aux nombre d'objetsB initialement créés pour mon objet formulaire Java.

    J'ai pensé à intervenir dans la méthode validate histoire de savoir combien de lignes la requête envoie a mon formulaireJava et créer le nombre de d'objetB correspondant mais l'affectation des valeurs transmises par la JSP vers le form semble se passer avant l'appel de la méthode validate..

    Si vous avez une idée sur comment procéder, ca me serait d'un grand secours !

    Merci d'avance

  7. #7
    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 Dr_GreenThumb Voir le message
    En fait ma JSP propose d'ajouter ou de supprimer des lignes dynamiquement (Javascript) mais le soucis c'est que quand je valide le formulaire le nombre de lignes (objetB) renvoyé par la JSP ne correspond pas forcement aux nombre d'objetsB initialement créés pour mon objet formulaire Java.
    Mais comment et où fais-tu cette initialisation d'objetsB ?
    Peux-tu montrer le code correspondant ?
    Et sinon, ton ActionForm est-il dans le scope session ?

    Si tu n'arrives pas à résoudre le problème avec les tags nested, la solution c'est peut-être d'utiliser les Lazy List.

  8. #8
    Membre confirmé
    Profil pro
    lead dev
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : lead dev

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Par défaut
    Milles mercis pour ton lien sur les Lazy List.. ca a réglé mon problème

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/05/2012, 23h23
  2. [2.x] probleme d'affichage de collection dans un formulaire
    Par rafleboss dans le forum Symfony
    Réponses: 12
    Dernier message: 05/08/2011, 08h11
  3. Modifier une collection d'objets dans un formulaire
    Par GiveMeAName dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/08/2006, 13h30
  4. Réponses: 2
    Dernier message: 12/02/2003, 15h26
  5. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52

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