web-dev-qa-db-fra.com

Pourquoi utiliser 'redirect = true' dans struts 1. * forward?

J'ai eu quelques problèmes avec ActionMessages créé lors de l'exécution d'une action qui ne s'affichait pas et j'ai découvert que mes problèmes étaient dus à la transmission de redirect=true dans struts-config.xml.

Puisque le comportement par défaut est redirect=false, j'ai réfléchi aux avantages que l'on peut avoir avec redirect=true et je n'ai trouvé aucune réponse. Est-ce que quelqu'un sait quand et pourquoi redirect=true devrait être utilisé dans les actions à venir?

22
Raibaz

il empêche le «problème de double soumission»

Ne jamais afficher les pages en réponse à POST

Toujours charger les pages en utilisant GET

Naviguez de POST à GET en utilisant REDIRECT

plus à ce sujet ici et ici

34
Boris Pavlović

Redirect envoie une réponse au navigateur qui le force à faire une nouvelle demande. Du point de vue du serveur, le navigateur ne fait qu’une nouvelle requête (même si elle est automatique). Quelques caractéristiques d'une redirection:

  • Les paramètres existants et les attributs Sont supprimés, une nouvelle demande Est formée avec les paramètres. 
  • La nouvelle URL est visible dans le navigateur, l’utilisateur Peut la mettre en signet. 
  • Il faut un voyage vers Le navigateur et retour, donc il peut être Plus lent.

Un transfert se produit sur le serveur. Le navigateur n'est pas impliqué dans cela. Quelques caractéristiques de l'avant:

  • Les nouveaux paramètres sont ajoutés ou écrasent les paramètres existants. Les paramètres existants ne peuvent donc pas être supprimés de la demande.
  • Des éléments peuvent être ajoutés dans le contexte de la demande, ils resteront disponibles. Vous pouvez transmettre des informations de cette manière.
  • L'URL n'est pas modifiée dans le navigateur. Pour le navigateur, l'adresse d'origine reste intacte.
  • Vous ne pouvez transférer que vers une autre URL dans la même application.

Donc, cela dépend de ce que vous voulez accomplir. Un forward est généralement parlé plus rapidement. Mais si l'utilisateur doit pouvoir mettre en favori le nouvel emplacement, ce n'est pas une option. 

25
Bruno Ranschaert

Si vous spécifiez redirect="true", Struts utilise une redirection côté client [response.sendRedirect()]. La JSP sera invoquée par une nouvelle requête du navigateur et toutes les données stockées dans l'ancienne requête seront perdues.

0
Mohit Singh