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 2 Java Discussion :

Equivalent de la balise <logic:forward>


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut Equivalent de la balise <logic:forward>
    Bonjour,

    Je commence le développement d'une application avec Struts2. Je souhaite utiliser une page index.jsp comme point d'entrée, dont la seule fonction sera de rediriger l'utilisateur vers une autre page JSP correspondant à une action Stuts2.

    Précédemment, sous Struts, j'utilisais la balise <logic:forward name="monAction"/> pour réaliser cette redirection, et cela fonctionnait bien. Cependant, je n'ai pas trouvé d'équivalent sous Struts2, et je ne sais pas comment faire pour obtenir le même résultat.
    Quelqu'un pourrait-il m'éclairer ? Merci !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Par défaut
    Je ne connais pas la balise <logic:forward name="monAction"/>, ni même Struts, donc peut être que ma réponse ne correspond pas à ta demande mais Struts2 fournit un type redirectAction dans le mapping de tes actions.

    Imaginons un lien (ou autre chose) de ta page index.jsp qui appelle une methode toMonAction() de l'action de ta page (IndexAction par ex) qui renvoit un String "MonAction".
    Et dans ton fichier de mapping ou dans les annotions de IndexAction, pour un result name="MonAction", tu définis le type="redirectAction" et la value="MonAction" qui va rediriger vers ton action.

    En espérant avoir été clair et que ca répond à ta question.
    A noter la possibilité d'utiliser le wildcard mapping pour ce type de procédé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Merci pour ta réponse !

    En fait, mon but serait plutôt d'avoir le même comportement qu'un <jsp:forward> (redirection automatique lorsque j'arrive sur mon index.jsp), mais avec appel à une action dans la page sur laquelle je suis redirigée... Je ne sais pas si c'est très clair, en tout cas cela fonctionnait avec <logic:forward> dans Struts.
    Pour le moment, j'utilise simplement un <jsp:forward>, et une balise <s:action> dans la page sur laquelle je suis redirigée, cela fait l'affaire mais j'imagine qu'il existe une solution plus propre

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Finalement, j'utilise la solution suivante, je ne sais pas si ça servira à quelqu'un mais en tout cas, ça fonctionne :

    index.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <html>
    <head>
    <script type="text/javascript">
    	function redirect() {
    		document.getElementById('indexForm').submit();
    	}
     
    </script>
    </head>
    <body onload="redirect()">
    <s:form action="session" namespace="/struts2" id="indexForm"></s:form>
    </body>
    </html>
    struts.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
     
    <struts>
    	<package
    		name="struts2"
    		extends="struts-default"
    		namespace="/struts2">
     
    		...
    		<action name="session" class="com.mmp.mvc.actions.SessionAction">
    			<result>/WEB-INF/jsp/session/sessionAdmin.jsp</result>
    			<result name="error"></result>
    		</action>
    		...
    	</package>
    </struts>
    Et le traitement qui va bien dans la classe SessionAction, tout ça dans le but de rediriger index.jsp sur sessionAdmin.jsp en remplissant quelques champs.
    J'ai l'impression que c'est un peu du bricolage, mais ça fonctionne et ça fait exactement ce dont j'avais besoin

  5. #5
    Membre confirmé Avatar de Altenide
    Homme Profil pro
    Formateur en technologies web
    Inscrit en
    Décembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Formateur en technologies web
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2008
    Messages : 129
    Par défaut Un petit peux le même pb.
    euh un petit peu du bricolage en effet J'ai le même pb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <s:if test="#session.name != 'admin' "> 
       <s:text name="test ko not session created"/>
         <jsp:forward page="inde2x.jsp" />  
    </s:if>
    je ne vois pas trop comment faire çà avec struts2

    avec le dode ci-dessus j'ai çà comme error :

    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée ...


    etc..

    ou existe t-il une solution comme un header(Location: en php

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Par défaut
    Citation Envoyé par Altenide Voir le message
    euh un petit peu du bricolage en effet J'ai le même pb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <s:if test="#session.name != 'admin' "> 
       <s:text name="test ko not session created"/>
         <jsp:forward page="inde2x.jsp" />  
    </s:if>
    je ne vois pas trop comment faire çà avec struts2

    avec le dode ci-dessus j'ai çà comme error :

    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée ...


    etc..

    ou existe t-il une solution comme un header(Location: en php
    Je pense qu'il y a un petit problème de compréhension ici. La JSP n'est pas éavluée du côté du client. Donc ici tu affiche du texte, puis tu rediriges... Tu ne peux pas demander de générer une réponse HTML pour le client, et dans ta réponse dire que finalement non la réponse sera générée par une autre JSP. Dans ton cas, tu pourrais peut-être utiliser "include" à la place de "forward".

    Tu te retrouves dans la même situation avec un servlet lorsque tu commences à envoyer des données au client en écrivant dans "out", et qu'ensuite tu demandes un "forward". Cela n'est plus possible car le servlet a déjà envoyé des données au client.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Par défaut
    Citation Envoyé par Craukette Voir le message
    Finalement, j'utilise la solution suivante, je ne sais pas si ça servira à quelqu'un mais en tout cas, ça fonctionne :
    merci, je vais utiliser cette méthode également. j'ai eu beau chercher, je ne trouve pas de solution "propre" permettant de réaliser cela...

    Edit :

    Autre alternative, utiliser le tag "action". Celui-ci va appeler une action, depuis la jsp actuelle, et avec l'attribut "executeResult" à "true", va exécuter le "result", et inclure le résultat dans la jsp actuelle. Est-ce une bonne méthode, je ne saurais le dire, mais cela fonctionne aussi.

    Référence : http://struts.apache.org/2.1.8.1/docs/action.html

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

Discussions similaires

  1. Equivalent de la balise pre ?
    Par rambc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 30/04/2012, 00h06
  2. logic:forward ne se realise pas
    Par brainbibou dans le forum Struts 1
    Réponses: 0
    Dernier message: 06/08/2010, 13h24
  3. Equivalent de la balise legend en HTML
    Par rbochet dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 29/07/2009, 12h02
  4. traitement javascript avant le <logic:forward>
    Par questionneuse dans le forum Struts 1
    Réponses: 13
    Dernier message: 02/06/2006, 10h41
  5. Réponses: 4
    Dernier message: 26/04/2006, 17h43

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