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 :

remplir un tableau dans une jsp


Sujet :

Struts 1 Java

  1. #21
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    bonsoir c_nvy
    je suis vraiment perdu et j'ai besoin de votre aide

    voila ce que j'ai fais :

    voici 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     <html:form action="/recep.do" method="post">
     
      <table border="0">
       <tr>
       <td>Fournisseur:</td>
       <td> <html:select property="fournisseur" > 
       <html:option value=""></html:option>  
      <html:options property="nomFournisseur"/>
       </html:select>
     
    <nested:nest property="recep">
       <td> 
     
           <nested:select  property="article"   onchange="document.recepForm.submit();">
     
             <nested:options property ="nomArticle"/>
               </nested:select>
     
       </td>
     
       <td> <nested:text property="ND" maxlength="15" ></nested:text>  </td>
     
       <td> <nested:text property="NF" maxlength="15"></nested:text>  </td>
     
     
       <td>
          <logic:equal name="recepForm" property="type" value="SIMPOST">
     
          <nested:select  property="profil"  disabled="false">
     
          <nested:options property ="nomProfil"></nested:options>
          </nested:select> 
          </logic:equal>
     
          <logic:notEqual name="recepForm" property="type" value="SIMPOST">
     
         <nested:select  property="profil"  disabled="true">
     
     
          <nested:options property ="nomProfil"/>
          </nested:select>
           </logic:notEqual>
     
     
      </td> 
     
     
        </nested:nest>
       </tr>
     
     
       </table>
       <html:link page="/recep1.do">Ajouter une ligne</html:link>
     
       <br/>
       <br/>
     
     
     
    	<table  border="1" width="100%|20">
     
     
    	<tr>
       <th>Article</th>
       <th>Numéro de série début</th>
       <th>Numéro de série fin</th>
       <th>Profil</th>
       <th>Quantité</th>
       </tr>
     
     
    <nested:root name="recepForm">
    		<nested:iterate property="recepList">
    			<tr>
    				<td><nested:write property="article"/></td>
    				<td><nested:write property="ND"/></td>
    				<td><nested:write property="NF"/></td>
    				<td><nested:write property="profil"/></td>
    			</tr>
    		</nested:iterate>
    	</nested:root>
    </table>
     
     
     <html:submit>tester</html:submit>
     
      </html:form>

    j'ai crée une action pour l' initialiser , elle me remplis les 3 combo voici son code:
    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 récupère le contenu des combo depuis la base
     
    recepForm.setNomFournisseur(listFournisseur);
     
     request.getSession().setAttribute( "listFournisseur",listFournisseur);
    	  request.getSession().setAttribute( "listArticle",listArticle);
    	 request.getSession().setAttribute( "listProfil",listProfil);
     
     
    	    recep.setNomArticle(listArticle);
    	    recep.setNomProfil(listProfil);
     recepForm.setRecep(recep);
     
    return mapping.findForward("preparer1");   //vers ma jsp
    quand je fais un select dans le 1er combo l'action "recep" est exécuté,elle prend la valeur de l'article selectionné ,elle récupèr son type depuis la base
    ensuit si le type ="x" le 2eme combo est activé sinon ,il reste désactivé

    le code de cette action est le suivant:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Recep recep=recepForm.getRecep();
    		  String article = recep.getArticle() ;
     
    rs=st.executeQuery("Select ART_TYPE_LIBELLE from GSS_ARTICLE,GSS_ARTICLE_TYPE where (GSS_ARTICLE.ART_TYPE_ID=GSS_ARTICLE_TYPE.ART_TYPE_ID) and (GSS_ARTICLE.ART_ART_LIBELLE='"+article+"')");
     
    	   while (rs.next())
    	   {
    	   type= rs.getString(1).trim();
    	   System.out.println(type);
    	   recepForm.setType(type);
    	   }
     
     listFournisseur=(ArrayList)request.getSession().getAttribute("listFournisseur");
    		  listArticle=(ArrayList)request.getSession().getAttribute("listArticle");
    		  listProfil=(ArrayList)request.getSession().getAttribute("listProfil");
     
     
    	   recepForm.setNomFournisseur(listFournisseur);
     
     
    	   recep.setNomArticle(listArticle);
    	    recep.setNomProfil(listProfil);
     
    	   recepForm.setRecep(recep);
     
     
       return mapping.findForward("test");  // forward toujour vers la meme jsp pour la réaffrichir
    j'ai met le contenu des combo dans le"request" pour réaffrichir la jsp avec

    ensuit quand je choisis un article(une valeur du combo)
    et le profil (une valeur du combo) et je remplis les 2 champs de text(nd)et(nf)
    et le clique sur le lien "ajouter" l'action "recep1" s'exécute :elle prend les vals que j'ai cité et elle les met dans un tableau
    voici son code:
    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
     
    Recep recep= recepForm.getRecep();
    recepList= recepForm.getRecepList() ;
    		recepList.add(recep);
     
    return mapping.findForward("test");  //vers la  meme jsp		
     
    listFournisseur=(ArrayList)request.getSession().getAttribute("listFournisseur");
    		listArticle=(ArrayList)request.getSession().getAttribute("listArticle");
    		 listProfil=(ArrayList)request.getSession().getAttribute("listProfil");
     
     
    recepForm.setNomFournisseur(listFournisseur);
    recep.setNomArticle(listArticle);
     recep.setNomProfil(listProfil);
    au début il n'ajoutais pas ce que j'ai saisi dans le tableau ensuite quand vous m'avez ditez d'ajouter "session"dans le scope de l'action "recep1" je l'ai fais mais il m'affiche :

    Property nomFournisseur returned a null value
    ensuit
    j'ai fais "session" dans le scope des 3 action que j'ai cité
    alors il m'insère dans le tableau mais juste ce que je selectionne dans les combo et le contenu des champs de txt non !!!!!!

    une autre anomalie :
    quand je selectionne un article ds le combo"article" alors l'action"recep" s'exécute ,normalement ce qui dois se passer c'est que le 2eme combo soit il deviens activé soit désactivé
    mais en plus de ça ce qui se passe c'est que les dernières lignes du tableau change et prend comme valeur ce que j'ai selectionné ds le combo avant meme que je clique sur le lien "ajouter"

    je ne comprend pas ce qu'es ce passe et pourtant j'ai passé des heures et des heures à vérifié le code et à suivre l'enchainement des action

    aidez moi

  2. #22
    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
    Citation Envoyé par john_wili Voir le message
    j'ai fais "session" dans le scope des 3 action que j'ai cité
    alors il m'insère dans le tableau mais juste ce que je selectionne dans les combo et le contenu des champs de txt non !!!!!!
    Premièrement, il faut suivre les conventions de nommage Java et donc écrire les propriétés nd et nf en minuscules dans la jsp et dans la classe Recep.

    Deuxièmement, il faut savoir que lorsque tu cliques sur un lien, tu ne soumets pas le formulaire.
    Il est donc normal que les valeurs des champs de type text ne soient pas prises en compte dans le tableau lorsque tu cliques sur le lien Ajouter.
    Il faudrait plutôt utiliser un bouton submit.

    Citation Envoyé par john_wili Voir le message
    une autre anomalie :
    quand je selectionne un article ds le combo"article" alors l'action"recep" s'exécute ,normalement ce qui dois se passer c'est que le 2eme combo soit il deviens activé soit désactivé
    mais en plus de ça ce qui se passe c'est que les dernières lignes du tableau change et prend comme valeur ce que j'ai selectionné ds le combo avant meme que je clique sur le lien "ajouter"
    ce qui est normal étant donné que le formulaire est soumis sur l'évènement onchange que tu as codé dans la première combo et donc, l'Action s'exécute dès que tu sélectionnes un élément dans cette combo et donc l'ajout de l'objet Recep dans la collection aussi.

    Il faudrait donc ajouter un test dans l'Action pour que ce code-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Recep recep= recepForm.getRecep();
    recepList= recepForm.getRecepList() ;
    recepList.add(recep);
    ne s'exécute que lorsque l'on clique sur Ajouter.

  3. #23
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    mais l'action qui ajout "recep" dans le tableau qui est "recep1.do"
    ne s'exécute que lorsque je clique sur le link que j'ai définie dans la jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link page="/recep1.do">Ajouter une ligne</html:link>
    en plus quand je selectionne 1 valeur ds le combo il n'ajout pas une ligne ds le tableau mais juste les dernières valeurs du tableau prend la valeur que j'ai selectionné
    (c à dire c'est pas l'action "recep1" qui s'exécute", juste le tableau change de valeur ce que je ne comprend pas??)

    ensuit quand je fais "ajouter" il l'ajout réelement

  4. #24
    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
    Effectivement, je n'avais pas fait attention que tu appelais une Action différente dans le lien.

    En fait, le form-bean étant dans le scope session et les listes étant des propriétés du form-bean, tu n'as pas besoin de mettre les listes dans le scope session dans la première Action, ni de les récupérer dans la deuxième Action.

    Tu peux donc supprimer le code suivant de la première action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    request.getSession().setAttribute( "listFournisseur",listFournisseur);
    request.getSession().setAttribute( "listArticle",listArticle);
    request.getSession().setAttribute( "listProfil",listProfil);
    et supprimer aussi le code suivant de l'Action de path /recep car inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     listFournisseur=(ArrayList)request.getSession().getAttribute("listFournisseur");
      listArticle=(ArrayList)request.getSession().getAttribute("listArticle");
      listProfil=(ArrayList)request.getSession().getAttribute("listProfil");
     
       recepForm.setNomFournisseur(listFournisseur);
     
       recep.setNomArticle(listArticle);
        recep.setNomProfil(listProfil);
     
       recepForm.setRecep(recep);
    Je pense que c'est la mise à jour de la propriété recep du form-bean via recepForm.setRecep(recep) qui pose problème.

    Après avoir enlevé ce code, cela devrait fonctionner mieux.

    Mais il reste tout de même le problème lié au fait que lorsque tu cliques sur le lien Ajouter, tu ne soumets pas le formulaire mais directement l'Action de path /recep1.
    Les champs saisis dans le formulaire ne sont donc pas pris en compte.
    Il faudrait remplacer le lien par un bouton submit.

  5. #25
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    si je remplaçe le lien par button submit comment il va exécuter exactement l'action "recep1"?

    car dans ce cas j'aurai 2 submit avec le meme formulaire

    pour activer ou désactiver le combo j'ai déclaré ds ma jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <nested:select  property="article"   onchange="document.recepForm.submit();">

    je crois quand on fais "submit" il va vers la 1er action qui se trouve ds le struts-config-xml et il l'exécute

    alors comment lier ce submit(qui va permettre d'ajouter une ligne au tableau) avec l'action "recep1" ?

    voila le fichier struts-config-xml :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <form-bean name="recepForm" type="com.yourcompany.struts.form.RecepForm" />
     
     <action
          attribute="recepForm"
          name="recepForm"
          path="/preparRecep"
          scope="session"
          type="com.yourcompany.struts.action.PreparRecepAction">
          <forward name="preparer1" path="/forms/recep.jsp" />
        </action>
     
        <action
          attribute="recepForm"
          name="recepForm"
          path="/recep"
          scope="session"
          type="com.yourcompany.struts.action.RecepAction">
          <forward name="test" path="/forms/recep.jsp" />
        </action>
     
        <action
          attribute="recepForm"
          name="recepForm"
          path="/recep1"
          scope="session"
          type="com.yourcompany.struts.action.Recep1Action">
          <forward name="test" path="/forms/recep.jsp" />
        </action>

  6. #26
    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
    Quand tu cliques sur un bouton submit, il va exécuter l'Action dont le path est spécifié dans l'attribut action du tag html:form.

    Il faudrait donc plutôt mettre le path /recep1 dans l'attribut action du tag html:form et changer le nom de l'Action à soumettre dans l'attribut onchange comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <nested:select property="article" onchange="document.recepForm.action='recep.do';document.recepForm.submit();">
    A tester.

  7. #27
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    j'ai fais ce que vous m'avez ditez mais il y'a tjr un prob

    j'ai cru que l'action "recep" qui active ou désactive le 2eme combo pose problem alors pour s'assurer et pour simplifier les choses , je l'ai enlevé et j'ai mis le 2eme combo active toujour,

    je voulais faire ça:
    quand je selectionne une val ds les 2 combo et je remplis les 2 champs de txt,
    je clique sur le button"submit" ces valeur sont mis ds le formulaire et
    l'action "recep1" les ajoutent dans le tableau

    voici la nouvelle 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <html:form action="/recep1.do" method="post">
     
    <nested:nest property="recep">
       <td> 
     
           <nested:select  property="article" >
     
             <nested:options property ="nomArticle"/>
               </nested:select>
     
       </td>
     
       <td> <nested:text property="ND" maxlength="15" ></nested:text>  </td>
     
       <td> <nested:text property="NF" maxlength="15"></nested:text>  </td>
     
     
       <td>
     
     
          <nested:select  property="profil"  disabled="false">
     
          <nested:options property ="nomProfil"></nested:options>
          </nested:select> 
     
     
     
     
      </td> 
     
     
        </nested:nest>
       </tr>
     
     
       </table>
     
       <!--
    	 <html:link page="/recep1.do">Ajouter une ligne</html:link>
    	-->
     
     
     
       <br/>
       <br/>
     
     
     
    	<table  border="1" width="100%|20">
     
     
    	<tr>
       <th>Article</th>
       <th>Numéro de série début</th>
       <th>Numéro de série fin</th>
       <th>Profil</th>
       <th>Quantité</th>
       </tr>
     
     
     
     
     
     
     
    	<nested:root name="recepForm">
    		<nested:iterate property="recepList">
    			<tr>
    				<td><nested:write property="article"/></td>
    				<td><nested:write property="ND"/></td>
    				<td><nested:write property="NF"/></td>
    				<td><nested:write property="profil"/></td>
    			</tr>
    		</nested:iterate>
    	</nested:root>
    </table>
         <html:submit>tester</html:submit>
       </html:form>
    et voici l'action "recep1":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Recep recep= recepForm.getRecep();
     
    recepList= recepForm.getRecepList() ;
    		recepList.add(recep);
     
    	return mapping.findForward("test");
    le 1er prob s'est réglé:les champs de txt s'ajoutent ds le tableau


    mais ce qui se passe c'est qu'il ajoute ces valeurs dans la nouvelles ligne
    et met aussi ces valeurs dans les autres lignes du tableau qui les a remplis avant

    je sais pas je me suis dite que peut etre le prob est dans :
    [/CODE]
    <nested:root name="recepForm">
    <nested:iterate property="recepList">
    <tr>
    <td><nested:write property="article"/></td>
    <td><nested:write property="ND"/></td>
    <td><nested:write property="NF"/></td>
    <td><nested:write property="profil"/></td>
    </tr>
    </nested:iterate>

    [/CODE]

    comme je ne connais pas comment ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Remplir un hashset dans une jsp et le renvoyer à l'action
    Par safa baccouche dans le forum Struts 1
    Réponses: 4
    Dernier message: 06/05/2011, 14h44
  2. Remplir un tableau dans une boucle
    Par floctc dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2009, 10h23
  3. remplir un tableau dans une jsp depuis des champsde text
    Par john_wili dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 15/07/2008, 01h08
  4. probléme pour parcourir un tableau dans une JSP
    Par nightcyborg dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/12/2007, 17h28
  5. afficher une variable tableau dans une JSP
    Par johnnywalker dans le forum Struts 1
    Réponses: 11
    Dernier message: 04/03/2007, 22h02

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