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 :

Conseil pour avoir une action pour plusieurs écrans


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut Conseil pour avoir une action pour plusieurs écrans
    Bonjour,

    on me demande d'avoir qu'un Action qui affichera un écran (3 possibles) suivant d'où on vient.
    J'aurais donc dans mon struts config.xml 3 <action ... > qui pointerons sur mon écran.
    Y a-t-il un moyen de passer un paramètre ou dois-je utiliser le paramètre mapping d'entrée de la methode execute ?

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    J'aurais donc dans mon struts config.xml 3 <action ... > qui pointerons sur mon écran.
    Une action peut très bien être appelées de plusieurs pages.

    Exemple:
    J'ai un site dans lequel je peux naviguer sur différentes pages. Pour permettre à l'utilisateur de revenir à la page d'accueil, sur chacune des pages en haut à gauche j'ai un lien "accueil" qui fait appel à une seule et unique action struts que j'ai nommé index.


    on me demande d'avoir qu'un Action qui affichera un écran (3 possibles) suivant d'où on vient
    Si tu ne dois avoir qu'une seule action, il est possible de passer un paramètre à ton action. tu récupères le paramètre dans ton action Java et selon lui tu rediriges vers différents endroits. Il n'y a pas besoin d'avoir plusieurs actions mais plusieurs forwards pour une seule action.

    Exemple:

    L'action de redirection s'appelle forward.


    Dans ma jsp, lorsque je l'appelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="forward" paramId="page" paramName="bean" paramProperty="pageName">
    Dans la méthode execute de ton action java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Récupération de la page à forwarder
    String pageName = request.getParameter("page");
     
    //Redirection vers la page
    return mapping.findForward(pageName);

    Enfin, dans le fichier struts-config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <action path="/forward"
     name="forward"
     type="com.mySelf.struts.actions.Forward" >
     <forward name="accueil" path="/WEB-INF/jsp/accueil.jsp" />
     <forward name="liste" path="/WEB-INF/jsp/liste.jsp" />
     <forward name="blabla" path="/WEB-INF/jsp/blabla.jsp" />
    </action>

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Ok, merci.

    Le problème, c'est qu'il n'y a aucun paramètre passé en url.
    Il faudrait que dans le forward du struts on passe un paramètre
    Je vais donc faire une Action avec tout ce qu'il y a de commun et faire de l'héritage.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="forward" paramId="page" paramName="bean" paramProperty="pageName">
    Ce code permet de passer un paramètre en URL.

    L'url ressemblerait ici à www.blablabla.com/contexte/forward.do?page="pageName" avec "pageName" qui correspond à la valeur de pageName.

  5. #5
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Malheureusement c'est pas moi qui fait le link. Mon je dois fournir comme action truc1, truc2, truc3
    donc ça serait dans le struts-config dire que l'action truc2 c'est truc1 avec un paramètre à passer.

  6. #6
    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
    Tu pourrais créer une Action qui hérite de MappingDispatchAction.

    Dans ce cas, dans le struts-config.xml, tu définis plusieurs path pour une même Action avec en paramètre le nom de la méthode à exécuter :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <action path="/action1" type="nomDuPackage.TaMappingDispatchAction" parameter="methode1" ...></action>
    <action path="/action2" type="nomDuPackage.TaMappingDispatchAction" parameter="methode2"...></action>
    <action path="/action3" type="nomDuPackage.TaMappingDispatchAction" parameter="methode3"...></action>

    Code de la MappingDispatchAction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class TaMappingDispatchAction extends MappingDispatchAction
    {
       public ActionForward methode1(ActionMapping mapping, …) throws Exception {}
       public ActionForward methode2(ActionMapping mapping, …) throws Exception {}
       public ActionForward methode3(ActionMapping mapping, …) throws Exception {}
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Exactement ce que je cherche. Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/06/2008, 15h03
  2. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  3. quel format doit avoir une BD pour l'importer avec copy?
    Par daknoom dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2005, 19h41
  4. [FLASH MX] Commande pour retarder une action
    Par anksou dans le forum Flash
    Réponses: 15
    Dernier message: 23/11/2004, 09h33

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