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 :

[logic:iterate] deux formulaires dans un jsp.


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut [logic:iterate] deux formulaires dans un jsp.
    Salut !

    J'ai un petit problème que je n'arrive pas à résoudre :'( j'espère que vous allez pouvoir m'aider...

    Dans une page jsp j'ai deux formulaire.

    Le premiere est classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html:form action="/recherche">
       <html:text property="txt" />
       <html:submit value="valider" />
    </html:form>
    Le deuxième liste le contenue du vector results :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html:form action="/action">
       <logic:iterate id="liste" name="myForm" property="results">
          <bean:write name="liste" property="champ1" />
          <html:checkbox name="liste" property="champ2" />
          <br>
       </logic:iterate>
       <html:submit value="OK" />
    </html:form>
    Lorsque je valide le 1ere formulaire, ca remplie un vector et le formulaire 2 se remplie, avec a coté de chaque résultat un checkbox.
    Le truc qui se passe c'est que lorsque je coche des checkbox et que je valide le deuxième formulaire, ca ne modifie pas le contenue du vector et je n'arrive donc pas a savoir quel on était les case qui on était coché...
    J'ai essayer avec d'autre composant que des checkbox (text) mais ca fait exactement pareille...

    Je doit surement malle m'y prendre :^/ savez vous comment faire ?

    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
    Essaie avec les tags nested :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       <nested:iterate name="myForm" property="results">
          <nested:write property="champ1" />
          <nested:checkbox property="champ2" />
          <br>
       </nested:iterate>

  3. #3
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Merci pour ta réponse c_nvy =)

    J'essaye ça demain et je te tien au courant.

  4. #4
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Salut !

    Non, ca ne marche toujours pas... :'(
    En fait si je met ma deuxieme action en scope="request", lorsque je clique sur le deuxieme bouton, toute ma liste disparer...
    et si je me met en scope="session", les cases que j'ai cochées se décoche...

  5. #5
    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
    As-tu fait un test avec champ2 de type boolean, initialisé à false par défaut ?

  6. #6
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Citation Envoyé par c_nvy
    As-tu fait un test avec champ2 de type boolean, initialisé à false par défaut ?
    oui, j'ai aussi essayé avec un champs text à la place du champs checkbox mais ca marche pas...
    En fait, j'ai l'impression que le 2eme formulaire n'envoie pas dans ça requette les composant définit dans le iterate...

  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
    Et lorsque tu soumets la deuxième action, tu rediriges vers une nouvelle page jsp ou la même ?

  8. #8
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    la meme

  9. #9
    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
    Avec le form-bean en scope session et champ2 de type boolean, ça devrait fonctionner.

    Peux-tu montrer ce que tu as codé dans la jsp, le mapping des deux Actions dans le struts-config.xml et l'ActionForm ?

  10. #10
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Ok, merci c_nvy

    voila j'ai simplifier au maximum les code source pour aider a la lecteur :

    recherche.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
     
    <%@ taglib uri="<a href="http://struts.apache.org/tags-html" target="_blank">http://struts.apache.org/tags-html</a>" prefix="html" %>
    <%@ taglib uri="<a href="http://struts.apache.org/tags-bean" target="_blank">http://struts.apache.org/tags-bean</a>" prefix="bean" %>
    <%@ taglib uri="<a href="http://struts.apache.org/tags-logic" target="_blank">http://struts.apache.org/tags-logic</a>" prefix="logic" %>
    <%@ taglib uri="<a href="http://struts.apache.org/tags-nested" target="_blank">http://struts.apache.org/tags-nested</a>" prefix="nested" %>
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <layout:html locale="true" styleClass="FORM">
     
    <layout:form action="/recherche">
    <td><layout:submit value="Search"/></td>
    </layout:form>
     
    <layout:form action="/action">
    <table width="100%" border="0">
    <tr>
    <th>Champ1</th>
    <th>Champ2</th>
     
    </tr>
     
    <nested:iterate id="liste" name="formMyTasks" property="results">
    <tr>
    <td><nested:write name="liste" property="area" /></td>
    <td><nested:checkbox name="liste" property="stop"/></td>
    </tr>
    </nested:iterate>
     
    <tr>
    <td></td>
    <td><nested:submit value="stop"/></td>
    </tr>
     
    </table>
    </layout:form>
     
    </layout:html>

    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
    30
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    "<a href="http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd" target="_blank">http://jakarta.apache.org/struts/dtd...config_1_2.dtd</a>">
    <struts-config> 
     
    <form-beans>
     
    <form-bean name="formMyTasks" type="monpak.FormMyTasks"/>
     
    </form-beans>
     
    <action-mappings>
     
    <action path="/recherche"
    type="monpak.ActionSearchMyTasks" 
    name="formMyTasks"
    scope="request" >
    <forward name="ok" path="/recherche.jsp"/>
    </action>
     
    <action path="/action" type="monpak.ActionActionMyTasks" name="formMyTasks" scope="request">
    <forward name="ok" path="/recherche.jsp"/>
    </action>
     
    </action-mappings>
     
     
    </struts-config>
    ActionSearchMyTasks.java :
    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
     
    public class ActionSearchMyTasks extends Action
    {
     
    public ActionForward execute( ActionMapping mapping, 
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response
    ) throws Exception
    {
    FormMyTasks beanForm = (FormMyTasks) form;
     
    BDD b1.connect();
     
    if( b1.execute( "SELECT * FROM TABLE1" ) )
    {
    ResultSet result1 = b1.getResult();
     
    if(result1 != null )
    {
    while(result1.next())
    {
    beanForm.getResults().add( new Resultats( result1.getString("area")) );
    }
    }
     
    }
    b1.deconnect();
    return mapping.findForward("ok");
    }
    }
    ActionActionMyTasks.java :
    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
     
    public class ActionActionMyTasks extends Action
    {
    public ActionForward execute( ActionMapping mapping, 
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response
    ) throws Exception
    {
     
    FormMyTasks beanForm = (FormMyTasks) form;
     
    for(int i=0; i<beanForm.getResults().size(); i++)
    {
    Resultats res = (Resultats) beanForm.getResults().elementAt(i);
     
    if( res.getExecute() != null)
    {
    System.out.println("Sélectionné"); //m'indique si la checkbox a été cliqué
    }else
    {
    System.out.println("NON-Sélectionné");
    }
    }
    return mapping.findForward("ok");
    }
    }
    FormMyTasks.java
    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
     
    public class FormMyTasks extends DefaultForm
    {
    private String area;
     
    private Vector results = new Vector();
     
     
    public String getArea()
    {
    return area;
    }
     
    public void setArea(String area)
    {
    this.area = area;
    }
     
    public Vector getResults()
    {
    return results;
    }
     
    public void setResults(Vector results)
    {
    this.results = results;
    }
     
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
    {
    ActionErrors erreurs = new ActionErrors();
     
    return erreurs;
    }
    }
    Resultats.java :
    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
     
    public class Resultats
    {
    private String area;
    private String stop;
     
    public Resultats (String area)
    {
    this.area = area;
    this.lotNumber = lotNumber;
    this.partNumber = partNumber;
    this.relatedPart = relatedPart;
    this.scrapDate = scrapDate;
    this.scrapCode = scrapCode;
    this.qty = qty;
    this.status = status;
    this.currentTask = currentTask;
    }
     
    public String getArea()
    {
    return area;
    }
     
    public String getStop()
    {
    return stop;
    }
     
    public void setArea(String area)
    {
    this.area = area;
    }
     
    public void setStop(String stop)
    {
    this.stop = stop;
    }
    }
    Voilou !

  11. #11
    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
    Premièrement, tu as codé les tags nested comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <nested:iterate id="liste" name="formMyTasks" property="results">
    <tr>
    <td><nested:write name="liste" property="area" /></td>
    <td><nested:checkbox name="liste" property="stop"/></td>
    </tr>
    </nested:iterate>
    Or je t'ai indiqué comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <nested:iterate name="formMyTasks" property="results">
    <tr>
    <td><nested:write property="area" /></td>
    <td><nested:checkbox property="stop"/></td>
    </tr>
    </nested:iterate>
    Deuxièmement, étant donné que tu utilises Struts-Layout, pourquoi ne pas utiliser le tag layout:collection en utilisant les tags selectName, selectProperty et selectType ?

    Et enfin, pour vérifier si une checkbox a été cochée, tu fais appel à une méthode getExecute(). Or, je ne vois pas de propriété execute dans la classe Resultats et la propriété spécifiée dans le tag checkbox est stop et non execute !

  12. #12
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    houla, ça fait beaucoup de chose qui vont pas :'( il faut m'excuser ça ne fait qu'une semaine que j'apprends Struts et il ne ressemble a aucune autre langage que je connaisse ^^

    Je vais essaye de corriger tout ça et de voir du coté de layout:collection...

    Merci pour ton aide, je te tien au courant.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Pour les checkbox il faut absolument les initialiser à null dans le reset.

  14. #14
    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 ça fait une semaine que tu fais du Struts, avant de te lancer dans Struts-Layout, teste les tags nested.

  15. #15
    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
    Ce qui serait bien, c'est d'initialiser à null la propriété stop pour chacun des beans Resultats en créant un nouveau constructeur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Resultats (String area,String stop)
    {
    this.area = area ;
    this.stop = stop ;
    }
    et dans ActionSearchMyTasks :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    beanForm.getResults().add( new Resultats( result1.getString("area"),null) );
    Et si ça ne fonctionne toujours pas, définir la propriété stop en boolean et initialiser à false à la place de null et surtout mettre scope="session" dans le mapping de deux Actions liées au form-bean formMyTasks dans le struts-config.xml.

    Avec une propriété de type boolean et les tags nested, ça fonctionne bien chez moi.

  16. #16
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    Oui, ca y est, ca fonctionne cette foi ci =)

    Merci beaucoup pour votre aide

  17. #17
    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
    Avec la propriété stop de type String ou de type boolean ?

  18. #18
    Membre éclairé Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Par défaut
    stop est de type String

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

Discussions similaires

  1. deux formulaires dans la même jsp
    Par safa baccouche dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/06/2011, 17h18
  2. Réponses: 5
    Dernier message: 20/07/2007, 14h11
  3. <logic:iterate> et formulaire
    Par khilik dans le forum Struts 1
    Réponses: 17
    Dernier message: 06/07/2007, 16h51
  4. Récupérer les champs d'un formulaire dans une jsp
    Par lalyly dans le forum Struts 1
    Réponses: 1
    Dernier message: 19/04/2007, 10h50
  5. Soumettre deux formulaires dans la même fonction.
    Par Bisûnûrs dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/11/2006, 23h18

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