Question

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 à mes transmissions ayant redirect = true dans struts-config.xml.

Le comportement par défaut étant redirect = false , je me suis demandé quels avantages peut-on avoir avec redirect = true et je n'ai trouvé aucune réponse. Quelqu'un sait-il quand et pourquoi redirect = true devrait être utilisé dans les actions à venir?

Était-ce utile?

La solution

il empêche le "problème de double soumission"

Ne jamais afficher les pages en réponse à POST

Toujours charger les pages à l'aide de GET

Naviguez du POST vers le GET en utilisant REDIRECT

plus d'informations sur ce ici et ici

Autres conseils

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 vous spécifiez dans l'URL.
  • La nouvelle URL est visible dans le navigateur, l'utilisateur peut le mettre en signet.
  • Il faut un voyage pour le navigateur et retour, de sorte qu'il peut être plus lent.

Un transfert a lieu 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 requête.
  • 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 pouvez transférer uniquement vers une autre URL dans la même application.

Cela dépend donc 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.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top