2012-11-23 11 views
7

Ciao a tutti ho alcune pagine jsp e sto usando struts2 per gestire i miei moduli. Dopo aver inviato un modulo per utente, l'URL visualizzato nella barra degli indirizzi diventa somthing.action, quindi quando l'utente aggiorna la pagina, i moduli vengono nuovamente inviati. Come posso gestire questo? dopo la presentazione di un modulo.Evita l'invio duplicato di Struts 2 pagina jsp

risposta

4

Se l'obiettivo è quello di prevenire la presentazione duplicato di forme quindi utilizzare token intercettore http://struts.apache.org/2.x/docs/token-interceptor.html o tokenSession intercettore http://struts.apache.org/2.x/docs/token-session-interceptor.html.

Se si desidera semplicemente aggiornare la pagina dopo l'invio senza inviare nuovamente, quindi reindirizzare all'azione in cui si visualizzano solo i risultati non in forma. Usa il risultato redirectAction per quello.

+0

Grazie Aleksandr M .... – edaklij

1

POST REDIRECT GET

Questo modello deve essere seguito per prevenire una nuova presentazione di modulo di aggiornamento. Ciò significa che, dopo aver inviato una richiesta POST, POST deve inviare una risposta REDIRECT per recuperare la pagina di destinazione utilizzando GET. Con questo modello, se l'utente aggiorna la pagina, solo la richiesta GET si ripete, quindi la stessa pagina viene recuperata senza aggiornare nulla nel server.

Questo è uno schema di progettazione comune consigliato per il web. Google fornirebbe molte risorse a riguardo.

3

+1 a entrambe le altre risposte.

Post/Redirect/Get è il classico modello per ogni tecnologia web.

Token Interceptor è un altro modo per andare, quando si utilizza Struts2;

c'è un terzo modo per andare, se non si cura di retro-compatibilità con i vecchi browser, o browser con JavaScript disabilitato: HTML5 s' window.history.pushState.

Basta reimpostare l'url su quello originale dopo che la pagina è stata caricata, e premendo F5 si otterrà la pagina originale, invece di inviare nuovamente la richiesta.

$(document).ready(function() { 
    window.history.pushState("","", "myOriginalUrlWithNoParams"); 
}); 
+1

+1 per il trucco HTML5. –

Problemi correlati