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 :

execution de deux actions successives


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 67
    Points : 57
    Points
    57
    Par défaut execution de deux actions successives
    bonjour,
    je suis debutante en struts,et j'ai besoin d'un peu d'aide.

    j'ai crée deux actions ,une qui insert le nom et prenom d'un client. l'autre affiche toutes les données de ma table clients.
    j'ai crée deux pages jsp une pour l'insertion et l'autre pour l'affichage

    voici les actions mapping de mon 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
     
    <action-mappings>
        <action  path="/ma_page" name="actionETbean"    
                type="ClientAction" scope="request" 
                validate="true"  input="/ma_page.jsp">
     
               <forward name="succes" path="/ma_page.jsp"/> 
               <forward name="affichage" path="/ma_page2.jsp"/>
        </action>
     
    <action path="/ma_page2" name="actionETbean2"
                type="afficheAction" scope="request"  
                validate="true" input="/ma_page2.jsp">
     
     </action> 
    </action-mappings>
    je ne sais pas pourquoi apres l'insertion(qui se fait correctement) l'affichage des données de la table ne se fait pas
    pourquoi il n'y a pas le forward vers ma_page2.jsp
    il n'y a pas d'erreur dans la console

  2. #2
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    on peut voir ton (tes) actions ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 31
    Points : 38
    Points
    38
    Par défaut
    je vais poser une question con...

    en cas de succès, tu dis bien à la fin de ton action de forwarder vers ta page2 avec un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return mapping.findForward("affichage");
    et non pas vers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return mapping.findForward("succes");
    qui te renvoie sur ta page de depart, d'après ton struts-config...

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 67
    Points : 57
    Points
    57
    Par défaut
    voici mes deux classeActions:

    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
    import java.util.Vector;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
     
     
    public class afficheAction extends Action{
    	  public ActionForward execute(ActionMapping mapping,
                  ActionForm form,
                  HttpServletRequest request,
                  HttpServletResponse response
                  )
    	  throws Exception {
     
    		  Vector my_List=new Vector();
    		  afficheForme tbl =(afficheForme)form;			  
     
    		  GestComptes GC=new GestComptes();		  
    		  my_List = GC.listClient();		    
    		  tbl.setClient(my_List);
     
    	  return mapping.findForward("affichage");
     
    	  }
    }

    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
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    public class ClientAction extends Action{
      public ActionForward execute(ActionMapping mapping,
    		                       ActionForm form,
    		                       HttpServletRequest request,
    		                       HttpServletResponse response
    		                       )
      throws Exception {
      ClientForm cf=(ClientForm) form;
      GestComptes GC= new GestComptes();
     
     
         GC.addClient(cf.getNom(), cf.getPrenom());
     
    	  return(mapping.findForward("succes"));
      }
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 31
    Points : 38
    Points
    38
    Par défaut
    Il faut que tu passes ce que tu veux afficher soit dans la requete, soit dans la session, suivant comment tu gères l'affichage dans ta jsp

    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("afficheForme", tbl);
    Ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().setAttribute("afficheForme", tbl);
    Et après tu n'a plus qu'à recupérer ton attribut du côté jsp.

    Et sinon tes classes devraient toujours commencer par une lettre majuscule, AfficheAction, AfficheForm...

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ça n'a rien d'étonnant, tu ajoutes un enregistrement mais tu ne recharges pas la liste utilisée par ta page.
    Tu pourrais chainer les actions (le plus simple) ou modifier la liste du bean (ActionForm) lié à la page.

    Dans le premier cas, tu n'as qu'à remplacer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <forward name="succes" path="/ma_page.jsp"/>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <forward name="succes" path="/ma_page2.do"/>
    Il serait bien de mettre tes classes dans des package, autant prendre de bonnes habitudes.
    Les noms des actions pourraient être plus explicite également, dans le genre : chargeListe, ajouteClient, ...

  7. #7
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    Haa la la... dès qu'il y'a une fille on se bouscule au portillon pour répondre

    je ne sais pas pourquoi apres l'insertion(qui se fait correctement) l'affichage des données de la table ne se fait pas
    Tu ne t'attends pas à ce que les deux actions se suivent d'elle même rassure moi ?
    Je suppose que sur ta jsp "/ma_page.jsp" tu ne fais qu'afficher un "insertion correcte" ou quelque chose du genre.
    Autrement dit c'est toi (en appelant séquentiellement ou pas quelque part les deux méthodes ) qui devrait provoquer l'insertion puis l'affichage.

  8. #8
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 67
    Points : 57
    Points
    57
    Par défaut
    Bonjour,
    Merci pour vos reponses.
    j'ai résolu mon probleme en creant une seule classe action et une seule classe bean,et j'ai gardé mes deux page jsp.
    la classe action forward vers "succes" .

    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
    import java.util.Vector;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
     
     
    public class afficheAction extends Action{
    	  public ActionForward execute(ActionMapping mapping,
                  ActionForm form,
                  HttpServletRequest request,
                  HttpServletResponse response
                  )
    	  throws Exception {
     
    		  Vector my_List=new Vector();
    		  afficheForme tbl =(afficheForme)form;			  
     
    		  GestComptes GC=new GestComptes();	
     
    		  GC.addClient(tbl.getNom(), tbl.getPrenom());
     
    		  my_List = GC.listClient();		    
    		  tbl.setClient(my_List);
     
     
    	  return mapping.findForward("succes");
     
    	  }
    }
    dans struts-config.xml
    on execute l'action de l'insertion /ma_page.do
    quand on trouve "succes" on passe à ma_page2.jsp pour afficher la liste

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
              "http://struts.apache.org/dtds/struts-config_1_2.dtd">
     
    <struts-config>
     
     <form-beans>  
       <form-bean name="actionETbean2" type="afficheForme"/>  
     </form-beans>
     
    <global-forwards>
       <forward name="succes" path="/ma_page2.jsp"/>
     
    </global-forwards> 
     
    <action-mappings>
     
    <action path="/ma_page" name="actionETbean2"
    	        type="afficheAction" scope="request"  
    	        validate="true" input="/ma_page.jsp"
    	        >
     </action> 
     
    </action-mappings>
     
    <message-resources parameter="ApplicationResources" null="false" />
    </struts-config>
    je cherche encore comment faire pour enchainer les actions, car quand j'appelle chaque action seule, le traitement se fait mais quand je reuni les appels des actions dans struts-config.xml ça marche pas,

    Tu ne t'attends pas à ce que les deux actions se suivent d'elle même rassure moi ?
    si j'ai bien compri ta question, c'est en cliquant sur un boutant submit par exemple quand declanche l'execution de l'action suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <action path="/insertClient" name="actionETbean2"
    	        type="afficheAction" scope="request"  
    	        validate="true" input="/erreur.jsp">
     
    	        <forward name="succes" path="/insertClient"/>
    	        <forward name="affichage" path="/afficheListe"/>
    	        <forward name="erreur" path="/erreur"/>
    </action>
    pourtant j'applique ce qui se trouve dans les tutos à la lettre.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ibtissamr Voir le message
    ...
    je cherche encore comment faire pour enchainer les actions, car quand j'appelle chaque action seule, le traitement se fait mais quand je reuni les appels des actions dans struts-config.xml ça marche pas,
    Pourquoi ne pas lier le <forward> à l'action cible voulue, qui elle, s'occupera de renvoyer à la page jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <action path="/ajouterCompte" ...>
       <forward name="succes" path="/afficherListe.do"/>
       ...
    </action>
     
    <action path="/afficherListe" ...>
       <forward name="afficher" path="/maPageListe.jsp"/>
       ...
    </action>

  10. #10
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    Le fait d'avoir plusiseurs forward dans ton struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...<forward name="succes" path="/insertClient"/>
    	        <forward name="affichage" path="/afficheListe"/>
    	        <forward name="erreur" path="/erreur"/>
    pour une même action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/insertClient" name="actionETbean2"
    	        type="afficheAction" scope="request"  
    	        validate="true" input="/erreur.jsp">
    ...
    ne signifie pas que ces forward vont s'exécuter l'un à la suite de l'autre.
    Cela n'a qu'une seule signification: ce sont les uniques forward vers lesquels tu peux "forwarder" à la fin de tes traitements (mis à part les global-forwards)
    Je pense que tu l'avais compris, ou du moins remarqué non ? ça répond à tes questions ?

Discussions similaires

  1. Execution de deux actions à la fois
    Par badreddine540 dans le forum JSF
    Réponses: 1
    Dernier message: 19/05/2009, 11h55
  2. [MySQL] impossible d'executer mes deux updates a la suite
    Par budylove dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2006, 14h49
  3. Execution d'une action longue
    Par bandit boy dans le forum C++Builder
    Réponses: 10
    Dernier message: 28/04/2006, 15h42
  4. Mettre deux actions sur un onClick
    Par budiste dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 16/11/2005, 16h17
  5. utiliser "if" pour faire deux actions differente
    Par vampyer972 dans le forum C
    Réponses: 2
    Dernier message: 09/05/2004, 10h12

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