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 :

Struts Action Dispatcher


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut Struts Action Dispatcher
    salut,
    En fonction de ce que fait l'utilisateur, par exemple, soumission d'un formulaire, on doit le rediriger dans la méthode appropriée de la classe Action.
    Pour cela ,personnellement j'utilise le dispatcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      protected ActionDispatcher dispatcher = new ActionDispatcher(this,
                ActionDispatcher.DEFAULT_FLAVOR);
    Et donc lors de la soumission du formulaire(par exemple), on passe premierement dans la méthode Execute():

    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
     
     
     if (!Utils.isAttributeInRequest("reqCode",request)) 
               {
                  return init(actionMapping, actionForm, request, response) ;
               }
     
               try 
               {
                      //redirection vers méthodes
                    return dispatcher.execute(actionMapping, actionForm, request,
                        response);
              } catch (java.lang.NoSuchMethodException e) {
                    //si erreur
                    return init(actionMapping, actionForm, request, response);
              }
    on test la valeur du reqCode et en fonction de sa valeur, on envoie vers la bonne méthode, par exemple si reqCode="rechercher", on redirige vers rechercher()

    Bref j'aimerai savoir si vous utilisez ce systeme dans votre contrôleur pour aiguiller, et j'aimerai savoir pourquoi certaines versions de Struts n'integrent pas la classe Dispatch?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Je ne sais pas. Personnellement, je n'utilise jamais le dispatch de struts, que je trouve un peu sale.
    Pour différencier les boutons cliqués sur le fomulaire, je mets un attribut "property" sur mes "html:submit", avec un attribut et des accesseurs correspondants dans mon ActionForm, et, dans mon action, je teste la valeur de ces property.

    Exemple :

    Dans une JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <html:submit value="Enregistrer" property="buttonEnregistrer" />
    <html:submit value="Suivant" property="buttonSuivant" />
    Dans ton action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (myForm.getButtonEnregistrer() != null) {
      .... ton code si "enregistrer" ....
    } else if (myForm.getButtonSuivant() != null) {
      .... ton code si "suivant" ....
    }
    Je ne vois pas vraiment l'intérêt des DispatchAction pour des opérations de ce genre, et entre nous, je ne le vois pas quelque soit le cas. C'est pour moi une bidouille du framework assez bancale, qui n'apporte rien fonctionnellement, et qui a plus tendance à perdre les gens (comme toi) qu'à les aider.

  3. #3
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Perso je trouve l'utilisation du DispatchAction / LookUpDispatchAction beaucoup plus propre et beaucoup plus clair que tout c'est test (if) dans la méthode execute.

    Car j'ai deja vu des codes ou tu a entre 10 et 15 actions. Et quand tu passes derrieres avec des gros paquets de test dans tous les sens c'est dur dur à se mettre dedans et à comprendre la logique.


    Pour le dispatch il n'a peut-etre pas été inclu dans les premieres versions de Struts car pas encore pensé à ce moment là. Mais il me semble que maintenant il y est maintenant? non?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par maxf1
    Perso je trouve l'utilisation du DispatchAction / LookUpDispatchAction beaucoup plus propre et beaucoup plus clair que tout c'est test (if) dans la méthode execute.
    Tout dépend de la façon de le faire. Mais il est vrai que ma méthode, qui me semble plus propre (car on ne teste pas l'égalité de chaines de caractères par exemple, et on ne passe pas par du javascript, mais on peut peut-être faire autrement, je ne suis pas expert en dispatch), est en fait très proche de celle du DispatchAction.
    Après, si l'on souhaite un comportement plus événementiel, autant utiliser JSF qui est fait pour ca, non ?

  5. #5
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par mixouille
    Après, si l'on souhaite un comportement plus événementiel, autant utiliser JSF qui est fait pour ca, non ?
    Ah désolé JSF pas vraiment ma tasse de thé.... moi pas être aussi orienté sur cette techno que struts

  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
    Citation Envoyé par maxf1
    Perso je trouve l'utilisation du DispatchAction / LookUpDispatchAction beaucoup plus propre et beaucoup plus clair que tout c'est test (if) dans la méthode execute.
    Tout à fait d'accord avec toi maxf1.
    Citation Envoyé par mixouille
    Tout dépend de la façon de le faire. Mais il est vrai que ma méthode, qui me semble plus propre (car on ne teste pas l'égalité de chaines de caractères par exemple, et on ne passe pas par du javascript, mais on peut peut-être faire autrement, je ne suis pas expert en dispatch), est en fait très proche de celle du DispatchAction.
    Avec la LookupDispatchAction, pas de javascript.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Certes, mais perso ca me gonfle d'utiliser mes clés de properties (qui concernent la partie "rendu") dans ma configuration.

    Après, tout est question de point de vue, tant qu'on ne commence par à mettre des if ("Valider".equals(machin)) dans le code, c'est déjà pas mal.

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 109
    Points
    109
    Par défaut
    Salut la discussion est bien a propos (pour moi également), puisque je suis justement en train d'étudier les Dispatch.

    Et je me pose une question, on définit plusieurs action dans une meme classe d'action, ca ok. Mais du coup dans le struts-config.xml, il n'y a qu'une entrée pour les 'n' actions du Dispatch.

    Alors ma question est la suivante, comment peut-on définir des pages 'input' différentes, pour que le controleur redirige vers une page indépendante pour chaque action définie, lors d'une erreur de validation (par exemple)?

  9. #9
    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
    Dans le struts-config.xml, tu peux par exemple définir un forward pour chaque méthode de la DispatchAction en cas d'échec de validation, mettre validate à false dans le mapping de l'Action et faire appel à la validation dans chacune des méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	ActionMessages errors = form.validate(mapping,request);
    	if ( !errors.isEmpty() )
    	{
    		saveErrors(request,errors);
    		return mapping.findForward("methode1Error") ;
    	}

  10. #10
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 45
    Points
    45
    Par défaut
    connaissez vous une version de struts qui possède la classe action dispatcher, j'ai essayé plusieurs versions de struts et aucune ne l'integrent

  11. #11
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 109
    Points
    109
    Par défaut
    perso j'apprend avec la 1.3.8, et y'a tout ce qu'il faut ! ;o)

    Et pour relancer la discution concernant l'interet des classes 'dispatch'. Que pensez vous de la classe MappingDispatchAction, ca a l'air d'etre pas mal, non ?

Discussions similaires

  1. [Struts]Action - Envoyer un flux de donnees au client
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 16
    Dernier message: 11/11/2010, 12h01
  2. [Struts] Action au démarrage d'une appli Web
    Par javaSudOuest dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/10/2005, 10h51
  3. [Débutante][Struts] Actions multiples
    Par BiM dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/09/2005, 10h22
  4. [STRUTS][ACTION]Ecriture d'un PDF dans la response
    Par woodwai dans le forum Struts 1
    Réponses: 10
    Dernier message: 23/02/2005, 10h26
  5. [STRUTS] Actions et forms
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 3
    Dernier message: 08/12/2004, 10h34

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