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 1.X] Action Struts -> retourner sur la page appelante quelle qu'elle soit


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut [Struts 1.X] Action Struts -> retourner sur la page appelante quelle qu'elle soit
    Bonjour,

    J'essaye de faire la chose suivante avec du Struts 1.X, mais je n'arrive pas à le faire sans "bidouiller"...

    Imaginons que j'ai un site, sous Struts, comportant quelques dizaines de pages.
    Sur chacune de ces pages, j'ai un même petit bouton, permettant, par exemple, de changer la langue d'affichage pour la session courante.

    Ce que je souhaite faire :
    L'utilisateur clique sur ce bouton, cela a pour conséquence de modifier dans sa session un paramètre de langue, et hop, retour sur la page appelante.

    C'est justement ce retour sur la page appelante (qui peut être n'importe quelle page du site) que j'aimerais gérer proprement, de préférence via le Struts-config.xml...

    Une idée ?
    J'ai quelques pistes à base d'ActionForward customisés, mais il y a peut être plus simple :-)

    Merci !

  2. #2
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Bonsoir,
    je ne c pas si struts a un mecanisme pour ca, mais
    une Idee:
    ajouter un Parametre a ton acton: hasBackAction, et tu test si:
    parametre=true, tu fais un Retour
    Soulama
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  3. #3
    Membre éclairé
    Avatar de you.baddi
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 185
    Points : 760
    Points
    760
    Par défaut
    bonjour :
    il suffie de recuperer le header de request et faire un maping vers ce header
    voici un code (c'est pas mon code personnel donc .....):

    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
     
    String referer = request.getHeader("referer");
     
    // redirection vers une page définie par défaut
          if( referer==null )
          {
             forward = (mapping.findForward("success"));
          }
          // redirection vers l'url du referrer.
          else 
          {
             forward = new RedirectingActionForward();
             forward.setPath( referer );
          }
     
          return forward;
    cordialement
    -------------------------------------------------------------------------
    BADDI YOUSSEF
    Master de Recherche en Génie Informatique
    ENSIAS, RABAT
    ---------------------------------------------------------------------------

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci pour vos réponses, mais ce sont justement des réponses qui sortent, pour moi, de la gestion Struts :-)

    Je recherche une solution intégrée à Struts, mais elle ne doit pas exister :-/

    Je crois que je vais finir par le faire à la mano, tant pis !

    Merci !

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Je cherche aussi !!
    J'ai vu aussi l'extrait de code de baddi_youssef85, qui est à mettre dans la classe Action.
    sauf que referer contient par exemple "http://localhost:8080/<mon_app_context>" et donc pas de redirection vers la page appelante mais une page par défaut.
    faut un parametre dans <action ..> dans le struts-config.xml ?

  6. #6
    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
    Ton problème n'est pas si simple que cela, en Struts ou en autre chose, pour une raison simple : une fois ta page affichée tu as perdu tout ton contexte request, ce qui fait que tu ne peux pas recharger la page en étant sûr d'avoir les mêmes donnes d'entrée. D'où la problématique qui fait que cela n'est pas prévu, au grand dam de beaucoup.

    La solution de baddi est la plus propre que j'imagine, mais pas suffisante pour les cas où tu utilises des attributs de requête ou des paramètres postés. Ce qui est probablement le cas, surtout avec Struts si tu n'utilises pas systématiquement le contexte session (et tu as bien raison).

    Une solution assez lourde (quoique, pas tant que ça) mais qui devrait marcher pourrait être, à chaque affichage de page (donc à mettre dans une super-classe de Action, framework-like) de stocker en session tes attributs de requête et ton ActionForm. Quand tu rechargeras avec la méthode de baddi tu pourras, dans cette même super-classe les récupérer et remettre en requête tes attributs et ton Form (je n'ai plus le nom exact de l'attribut de requête utilisé par Struts pour stocker les ActionForm en requête, Google ou un coup de debug te le diront, ça doit être quelque chose du genre "org.apache.struts.action.ActionForm").

    C'est clair ? Pas trop hein... Bon qu'en disent les autres, faisable ? Moi il me semble.

    @linotte : j'aurais cru que la méthode de baddi marcherait, probablement qu'il faut fouiller un peu plus les paramètres possibles de request.getHeader("..."), il doit y avoir de quoi récupérer tout ce qu'il faut.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/03/2012, 21h27
  2. Réponses: 0
    Dernier message: 09/03/2009, 16h33
  3. Timeout sur une action struts
    Par Meunier dans le forum Struts 1
    Réponses: 6
    Dernier message: 15/11/2006, 19h04
  4. les actions ne fonctionnent plus sur ma page
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 47
    Dernier message: 14/11/2005, 13h45
  5. Réponses: 2
    Dernier message: 06/03/2003, 16h37

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