2009-03-05 14 views
21

Ho avuto qualche problema con ActionMessages creato durante l'esecuzione di un'azione che non è stata visualizzata, e ho scoperto che i miei problemi erano dovuti al fatto che avessi redirect=true in struts-config.xml.Perché usare 'redirect = true' nei montanti 1. * avanti?

Poiché il comportamento predefinito è redirect=false, ho pensato a quali vantaggi si può utilizzare redirect=true e non sono riuscito a trovare alcuna risposta. Qualcuno sa quando e perché redirect=true deve essere utilizzato in avanti?

risposta

31

che impedisce il 'problema doppia submit'

Non mostrare mai le pagine in risposta al POST

caricare le pagine usando sempre GET

Navigate da POST a GET usando REDIRECT

altro su questo here e here

24

Redirect invia una risposta al browser che forza il browser a effettuare una nuova richiesta. Dal punto di vista del server, il browser fa appena una nuova richiesta (anche se automaticamente). Alcune caratteristiche di un reindirizzamento:

  • I parametri esistenti e attributi sono disposti, una nuova richiesta è formata con i parametri specificati nell'URL.
  • Il nuovo URL è visibile nel browser, l'utente può aggiungerlo ai segnalibri.
  • Ci vuole un viaggio a il browser e viceversa, quindi può essere più lento.

Un inoltro si verifica sul server. Il browser non è coinvolto in questo. Alcune caratteristiche del forward:

  • I nuovi parametri vengono aggiunti o sovrascrivono i parametri esistenti. Quindi i parametri esistenti non possono essere rimossi dalla richiesta.
  • Le cose possono essere aggiunte nel contesto della richiesta, rimarranno disponibili. È possibile passare le informazioni in questo modo.
  • L'URL non viene modificato nel browser, per il browser l'indirizzo originale rimane intatto.
  • È possibile inoltrare a un altro URL solo nella stessa applicazione.

Quindi dipende da ciò che si desidera realizzare. Un avanti è generalmente parlato più velocemente. Ma se l'utente dovrebbe essere in grado di aggiungere un segnalibro alla nuova posizione, non è un'opzione.

0

Se si specifica redirect="true", Struts utilizza un reindirizzamento lato client [response.sendRedirect()]. Il JSP verrà richiamato da una nuova richiesta del browser e tutti i dati memorizzati nella vecchia richiesta andranno persi.

Problemi correlati