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 :

Surcharge de classes Struts [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 772
    Par défaut Surcharge de classes Struts
    Bonjour à tous,

    je cherche à savoir s'il y aurait un moyen de rajouter des paramètres à la balise <action> de struts-config.xml

    j'ai déjà surchargé RequestProcessor pour rajouter quelques méthodes à moi, ca marche très bien. Maintenant, après avoir compris comment fonctionnait commons-digester - du moins je crois -, je constate que pour rajouter des paramètres gérés par la balise Action, il faudrait que surcharge ActionConfig.Java en lui rajoutant une ou plusieurs méthodes correspondants aux paramètres XML que je voudrais rajouter.

    Seulement il me semble que c'est difficillement possible, vu que cette classe, qui est le mapping de la balise Action, est utilisée dans beaucoup trop d'autres, qu'il faudrait aussi que je surcharge, etc...

    Y a-t-il un autre moyen? Il est vraiment dommage que les paramètres autres que ceux prévus par Struts ne soient pas stockés dans un tableau de chaque classe de mapping du fichier struts-config.xml. Cela aurait résolu tout mes problèmes.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour blbird,
    je t'avoues que ca fait pas mal de temps que j'utilise Struts et je n'ai jamais eu besoin de surcharger le struts-config. Pour quelles raisons as tu besoin de rajouter des balises dans le struts-config?

    Angelo

  3. #3
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 772
    Par défaut
    Pour pouvoir gérer un fin d'ariane dans toutes mes pages automatiquement via le fichier struts-config.

    L'idée est de rajouter une balise "niveau", et une balise lien "precedent".

    J'aurais eu ensuite une balise JSTL présente sur chaque page JSP qui m'aurais généré le fil d'Ariane tranquillement.

    Je suis preneur de toute solution.

  4. #4
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour blbird,

    Je pense que tu as une réponse a ta question dans cet article :

    http://www.onjava.com/pub/a/onjava/2...ssecurity.html

    Il est possible d'etendre le ActionMapping qui défini les balises Action.

    Du coup, je pense que tu peux faire ce que tu souhaites, mais je ne suis pas allé au bout de l'article (par manque de temps).

    N'hesites pas a remonter le sujet car c'est interessant (surtout si tu trouves une solution )

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Pour gerer un fil d'ariane tu peux utiliser tiles ou tu definit une JSP layout qui s'occupe de generer ton fil d'ariane. Tes actions (definit dans le struts-config) au lieu de retourner directement sur ta JSP , retourne sue une definition d'un layout.

    Mon explication n'est pas tres explicite, mais tu as un petit tutorial en francais sur http://www-igm.univ-mlv.fr/~dr/XPOSE...s/exemple.html qui te permettra de voir un peu plus tiles.

    Angelo

  6. #6
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 772
    Par défaut
    J'utilise déjà Tiles. Pour mon problème, c'est une solution de remplacement intéressante si je n'arrive pas à faire ce que je veux pour mon fil d'Ariane, au lieu d'une balise JSTL.

    Je regarde de ce pas le lien que m'a fournit azerr (merci!), qui est effectivement très intéressant. Sur une première lecture, je ne sais pas encore comment lier mes ActionForm a un ActionMapping qui ne dérivent pas de la même classe.

    Il faut que j'étudie le modèle. Je vous tiens au courant.

  7. #7
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 772
    Par défaut
    Et bien j'ai réussis. Ce n'était pas très compliqué finallement.

    Imaginons que vous vouliez rajouter vos paramètres à une action de votre fichier struts-config.xml, et que vous voudriez accéder à ces nouveaux paramètres dans votre class d'action.

    Pour ca, il vous suffit de créer une classe héritant ActionMapping, en y rajoutant les paramètres Bean voulus. Ici par exemple je rajoute le paramètre level :
    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
    package fr.appli.struts;
     
    import org.apache.struts.action.ActionMapping;
     
     
    public class FilDArianeMapping extends ActionMapping {
        private String level = null;
     
        public FilDArianeMapping() {
            super();
        }
     
        public String getLevel() {
            return level;
        }
     
        public void setLevel(String level) {
            this.level = level;
        }
    }
    Ensuite, dans votre fichier struts-config.xml, dans une action quelconque, par exemple ici TitreSecondaireInit, vous la déclarez en rajoutant le paramètre className :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action path="/titresecondaireinit" name="titreSecondaireBean" scope="session" 
        	type="fr.appli.actions.TitreSecondaireInit" className="fr.appli.struts.FilDArianeMapping">
        	<set-property property="level" value="160" />
        	<forward name="ok" path="/vues/titresecondaire.jsp"/>
        </action>

    Ensuite, dans mon fichier de classe d'action, ici fr.appli.actions.TitreSecondaireInit, je recherche mon paramètre level comme ceci :
    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
    package fr.appli.actions;
     
    // Imports à faire
     
    public class TitreSecondaireInit extends ActionPortal {
        static Logger log = Logger.getLogger(TitreSecondaireInit.class);
     
        public TitreSecondaireInit() {
            super();
        }
     
        public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
            TitreSecondaireBean titre = (TitreSecondaireBean) form;
     
            FilDArianeMapping fa = (FilDArianeMapping)mapping;
    // Et l'utilisation de votre paramètre level
            log.debug("***** MAPPING FILDARIANE : LEVEL = "+fa.getLevel());
    //Suite de votre code d'action...
            // Initialisation de l'objet session avec la requête en cours
            initSessionRequete(request);
    // etc...
    }
    }
    Un lien très intéressant qui contient un diagramme UML des classes Struts, et qui m'a été bien util : http://rollerjm.free.fr/pro/Struts11.html

    Un petit rajout dans la FAQ peut-être, ne serait-ce que pour le diagramme UML.

  8. #8
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour blbird,
    merci pour l'information, je ne connaissais pas cette technique. La seule critique que je pourrais faire a cette solution, c'est de ne pas obliger le developpeur a definir la propriete level dans le struts-config ou d'oublier de mettre dans l'action className.

    Pour forcer le developpeur a renseigner, j'aurrais creer une classe action de base abstract qui oblige a implementer la methode getLevel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public abstract class AbstractActionPortlal extends Action {
     
       public abstract String getLevel();
    }
     
    public TitreSecondaireInit extends AbstractActionPortal {
     
      public String getLevel() {
          return "160";
      }
    }
    En tout cas merci encore pour l'information.

    Angelo

  9. #9
    Membre éclairé

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 772
    Par défaut
    Merci à toi pour le lien!

    Tout dépend si on veut obliger l'utilisation des nouvelles propriétés ou non, ce qui n'est pas mon cas.

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

Discussions similaires

  1. [2.x] Surcharger la classe Form
    Par s.n.a.f.u dans le forum Symfony
    Réponses: 15
    Dernier message: 15/05/2012, 11h05
  2. [Débutant] Surcharge de classe
    Par soso78 dans le forum C#
    Réponses: 1
    Dernier message: 30/11/2011, 17h19
  3. Surcharge de classe interne lors d'héritage?
    Par big x dans le forum Langage
    Réponses: 3
    Dernier message: 21/06/2007, 15h22
  4. [C#] Comment surcharger la classe DataGrid ?
    Par Dozer71 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 27/07/2006, 13h43
  5. [MFC] surcharger une classe
    Par exter666 dans le forum MFC
    Réponses: 9
    Dernier message: 16/03/2005, 00h53

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