Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[struts] rester sur la même page

9 réponses
Avatar
gorsini
Bonjour,

Je débute et je ne sais pas comment dire à Struts que, suite à
l'éxécution d'une action, je souhaite rester sur la même page qui est
à l'origine de l'action.

L'action que je mets en place sera appelée depuis plusieurs page mais,
dans tous les cas, je reviendrais sur la page d'où je suis venu. Je ne
souhaite pas coder une récupération de la l'URL d'où je viens dans
l'action ; j'imagine que Struts doit savoir faire ça mais la
documentaion ne me parle pas assez.

Merci

Gilles

9 réponses

Avatar
Bruno Nogent
je crois que l'objet request a qqepart une reference sur la requette
entrente

"gilles orsini" wrote in message
news:
Bonjour,

Je débute et je ne sais pas comment dire à Struts que, suite à
l'éxécution d'une action, je souhaite rester sur la même page qui est
à l'origine de l'action.

L'action que je mets en place sera appelée depuis plusieurs page mais,
dans tous les cas, je reviendrais sur la page d'où je suis venu. Je ne
souhaite pas coder une récupération de la l'URL d'où je viens dans
l'action ; j'imagine que Struts doit savoir faire ça mais la
documentaion ne me parle pas assez.

Merci

Gilles


Avatar
Franck
gilles orsini wrote:
Bonjour,

Je débute et je ne sais pas comment dire à Struts que, suite à
l'éxécution d'une action, je souhaite rester sur la même page qui est
à l'origine de l'action.

L'action que je mets en place sera appelée depuis plusieurs page mais,
dans tous les cas, je reviendrais sur la page d'où je suis venu. Je ne
souhaite pas coder une récupération de la l'URL d'où je viens dans
l'action ; j'imagine que Struts doit savoir faire ça mais la
documentaion ne me parle pas assez.

Merci

Gilles


Ben a vu de nez,
A la fin de l'action je ferai un
response.sendRedirect(request.getHeader("Referer"));
(attention a bien tester que Referer est pas null)

@+
--
Franck Lefebure
mailto:

Avatar
FD
Bonjour,

"gilles orsini" wrote in message
Bonjour,

Je débute et je ne sais pas comment dire à Struts que, suite à
l'éxécution d'une action, je souhaite rester sur la même page qui est
à l'origine de l'action.


Alors je ne suis pas sur de savoir si tu veux :
1) appeler l'action et reafficher la page (deux solutions)
2) ou vraiment rester sur la même page sans bouger

Voici pour 1), puis pour 2) :

1) deux solutions en struts :
- tu fais renvoyer un forward par ton action (utilisation classique de
struts, pas de response.sendRedirect() ou de
request.getRequestDispatcher().forward(), bouh !) et ce forward pointe vers
l'url de ta page d'appel :

Dans ton action :
public classe MonAction {
public ActionForward execute(){
return mapping.findForward("success");
}
}

Et dans struts-config.xml :
<action ...>
<forward name="success" path="/pagedappel.jsp" />
</action>

- OU, tu retournes vers le "input forward" :

Dans ton action
public classe MonAction {
public ActionForward execute(){
return mapping.getInputForward() ;
}
}

Et dans struts-config.xml :
<action input="/pagedappel.jsp"
...>
</action>


2) Tu fais retourner un forward null par ton action :

Dans ton action :
public classe MonAction {
public ActionForward execute(){
return null ;
}
}

Avatar
Lionel
FD wrote:
Bonjour,

"gilles orsini" wrote in message
Bonjour,

Je débute et je ne sais pas comment dire à Struts que, suite à
l'éxécution d'une action, je souhaite rester sur la même page qui est
à l'origine de l'action.


Alors je ne suis pas sur de savoir si tu veux :
1) appeler l'action et reafficher la page (deux solutions)
2) ou vraiment rester sur la même page sans bouger


je n'ai pas compris ca.
J'avais apparemment la meme problématique:
j'affiche une liste d'articles. Depuis chaque ligne, on peut aller sur le
détail de l'article. Depuis le détail de l'article, il y a un bouton
permettant de supprimer l'article.
Après suppression, il faudrait revenir à la liste d'article (soit la page
qui a permis d'accéder à la fiche)
Problème: on peut accéder à une fiche article depuis plusieurs endroits,
donc le forward est dynamique selon l'endroit d'ou on vient.

Solution: ajouter un paramètre d'entrée dans la fiche article, permettant de
pouvoir sélectionner le bon forward après suppression.

Le coup du referer, ca fonctionne pas. Ca renvoit l'adresse qui a permis
d'afficher la page, et non pas l'adresse précédente. Dans mon cas, le
referer pointe vers la fiche article....

PS: une solution foireuse serait de forwarder vers une page jsp qui fait un
history.back() mais ca fonctionne pas sur le back et le résultat d'un
formualaire en post, et puis c'est bien dégueu comme solution...


Avatar
gorsini
"FD" wrote in message news:<bvmf2b$e4f$...
- tu fais renvoyer un forward par ton action (utilisation classique de
struts, pas de response.sendRedirect() ou de
request.getRequestDispatcher().forward(), bouh !) et ce forward pointe vers
l'url de ta page d'appel :

- OU, tu retournes vers le "input forward" :

2) Tu fais retourner un forward null par ton action :



Merci pour la réponse. Malheureusement, il me manque encore quelques
détails pour que cela fonctionne. Voila ce que je peux rajouter.

soltution 1 : ne m'arrange pas car l'action est executer depuis
plusieurs pages différentes et je voudrais avoir une solution
générique et éviter de gérer tous les cas possibles.

solution 2 : c'est ça la solution que je voudrais :-) mais je suis en
Struts 1.0 et je n'ai pas la méthode getInputForward.

solution 3 : c'est pas ce que je veux ; j'ai essayé et j'obtiens une
page blanche.

Dans tous les cas, ce qui me dérange c'est que la solution réside dans
le code de l'action. Je trouve dommage que je ne puisse pas
solutionner le problème au niveau du struts-config. C'est me parait
plus cohérent ou alors je ne vois pas l'intéret de ce fichier de
config. Il faudrait pouvoir dire
<action name="...">
<forward name="success" path="la page"/>
<forward name="failure" path="la page d'où je viens"/>
</action>

Pour l'instant, j'ai obté pour la solution 1 mais ça me plait pas.

Gilles (qui est triste de pas pouvoir faire ce qu'il veut avec
struts).

Avatar
Lionel
gilles orsini wrote:

solution 2 : c'est ça la solution que je voudrais :-) mais je suis en
Struts 1.0 et je n'ai pas la méthode getInputForward.


arg....c'est simplement ca que tu voulais ?
return new ActionForward(actionMapping.getInput();

Avatar
Franck
Lionel wrote:
gilles orsini wrote:

solution 2 : c'est ça la solution que je voudrais :-) mais je suis en
Struts 1.0 et je n'ai pas la méthode getInputForward.


arg....c'est simplement ca que tu voulais ?
return new ActionForward(actionMapping.getInput();


Ca va pas lui résoudre son problème,
vu que getInput() renvoie la valeur du parametre "input" du mapping d'action

Ce qui veut dire qui lui faudrait créer autant de mapping que de pages ou
figure le lien d'appel de l'action.

Et c'est pas ce qu'il veut ... (enfin si j'ai bien compris)

Comme dit précedemment, une solution est de passer en parametre à l'action
l'url de la page appelante
/doMyAction.do?fromPage=thisPage.jsp

Et après de traiter ce paramètre dans l'action
ou, plus réutilisable, de surcharger la methode processForwardConfig du
RequestProcessor
--
Franck Lefebure
mailto:


Avatar
FD
Comme dit précedemment, une solution est de passer en parametre à l'action
l'url de la page appelante
/doMyAction.do?fromPage=thisPage.jsp
Et après de traiter ce paramètre dans l'action


Ca, c'est sur que ca marche, mais attention aux utilisateurs qui pourraient
écrire des URLs en dur directement dans la barre d'adresse du navigateur :
la valeur de fromPage doit être relative à l'application et ne pas contenir
de '/' de préférence.


ou, plus réutilisable, de surcharger la methode processForwardConfig du
RequestProcessor


Ca ne va pas être possible, il a dit qu'il utilisait Struts 1.0.

Avatar
gorsini
Merci pour les réponses.

Je me résoud à passer en paramètrer de mon action un paramètre qui me
dit d'où je viens et qui me permet de renvoyer vers cette page.

Je préfére, tout de même, passer un paramètre qui soit une
codification à moi et ne mettre le vrai nom de la page que dans le
struts-config. Ca évite les problème dont vous avez parler à savoir un
internaute qui mettrait une page directement dans l'url.