2012-11-23 26 views
7

Witam wszystkich Mam niektóre strony jsp i używam struts2 do obsługi moich formularzy. Po przesłaniu formularza przez użytkownika, adres URL wyświetlany na pasku adresu staje się somthing.action, więc gdy użytkownik odświeży stronę, formularze zostaną przesłane ponownie. Jak mogę sobie z tym poradzić? po przesłaniu formularza.Unikaj podwójnego przesyłania strony Struts 2 jsp.

Odpowiedz

4

Jeśli celem jest zapobieganie zduplikowanych składanie formularzy następnie użyć tokenhttp://struts.apache.org/2.x/docs/token-interceptor.html przechwytywania lub tokenSession przechwytywania http://struts.apache.org/2.x/docs/token-session-interceptor.html.

Jeśli po prostu chcesz odświeżyć stronę po przesłaniu bez ponownego przesyłania, przekieruj do działania, w którym wyświetlasz tylko wyniki, a nie formularz. Użyj do tego wyniku redirectAction.

+0

Dziękuję Aleksandr M .... – edaklij

1

POST REDIRECT GET

Ten wzorzec musi być przestrzegane, aby zapobiec ponownemu złożenie formularza na odświeżaniu. Oznacza to, że po przesłaniu żądania, POST, powinien wysłać odpowiedź REDIRECT, aby pobrać stronę docelową za pomocą GET. W przypadku tego wzorca, jeśli użytkownik odświeży stronę, tylko żądanie GET nastąpi ponownie, więc ta sama strona zostanie pobrana bez aktualizacji niczego na serwerze.

Jest to popularny wzór zalecany dla stron internetowych. Google zapewniłoby wiele zasobów na ten temat.

3

+1 dla obu pozostałych odpowiedzi.

Post/Redirect/Get to klasyczny wzór dla każdej technologii internetowej.

Token Interceptor to kolejny sposób na przejście, gdy używasz Struts2;

Jest trzecia droga, jeśli nie zależy Ci na retro kompatybilności ze starszymi przeglądarkami lub przeglądarkach z wyłączoną obsługą JavaScript: HTML5 's window.history.pushState.

Po prostu zresetuj adres URL do oryginalnego po załadowaniu strony, a naciśnięcie F5 spowoduje wyświetlenie oryginalnej strony zamiast ponownego przesłania żądania.

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

+1 za sztuczkę HTML5. –

Powiązane problemy