Jaki jest najlepszy sposób uniknięcia duplikowania składania formularza na wiosnę. Czy ta struktura zapewnia jakąś specjalną funkcję do rozwiązania tego problemu (na przykład jako Synchronizer Token w Struts)?Powielanie formularza na wiosnę
Odpowiedz
Istnieją różne sposoby, aby uniknąć podwójnego podnosi, które mogą być łączone:
użyć JavaScript do
disable
przycisk kilka ms po kliknięciu. Pozwoli to uniknąć wielokrotnego przesyłania powodowanego przez niecierpliwych użytkowników, którzy klikają kilka razy na przycisku.Wyślij przekierowanie po przesłaniu, jest to znane jako Post-Redirect-Get (PRG) pattern. Zapobiegnie to wielokrotnemu przesyłaniu spowodowanemu przez użytkowników, którzy naciskają klawisz F5 na stronie wyników i ignorują ostrzeżenie przeglądarki, że dane zostaną wysłane ponownie lub nawigację wstecz i wstecz za pomocą przycisków wstecz/przodu przeglądarki i zignorowanie tego samego ostrzeżenia.
Generowanie unikalnego tokena po zażądaniu strony i umieszczanie zarówno w zakresie sesji, jak i ukrytym polu formularza. Podczas przetwarzania sprawdź, czy jest token, a następnie usuń go natychmiast z sesji i kontynuuj przetwarzanie. Jeśli nie ma tokena, to przetwarzanie bloku. Pozwoli to uniknąć wyżej wymienionych rodzajów problemów.
Wiosną można użyć RedirectView
jako wdrożenie wzoru PRG (jak opisano w punkcie 2). Pozostałe dwa punkty należy wprowadzić samemu.
Witam Zastosowałem wzór PRG. to działa dobrze. ale muszę przekazać wiadomość, aby uzyskać metodę "Identyfikator użytkownika 1001 utworzony pomyślnie". dla tego mam zmienną klasy kontrolera, która ustawi jej wartość w metodzie post i otrzyma ją w metodzie GET. Stworzy to problem dla współbieżnego użytkownika. Jak mogę uniknąć tego problemu? –
@Dhrumil: Przechowuj go w sesji lub plik cookie. – BalusC
nie zajmuje więcej czasu na przetwarzanie. Zamiast naszej ręcznej struktury kodowania należy podać pewne funkcje, takie jak tokeny, które Struts2.0 zapewnia domyślnie. –
Po prostu zrób przekierowanie po poście. Po pomyślnym przesłaniu formularza po zwróceniu ModelAndView upewnij się, że widok jest widokiem przekierowania. Z POV użytkownika przesyła formularz, a następnie jest przekierowywany, aby uzyskać "GET" na inny adres URL. W ten sposób nie będą się podwójnie zgłaszać.
Należy zauważyć, że podczas korzystania z widoku przekierowania atrybuty modelu stają się widoczne w adresie URL jako parametry. Więc możesz zachować atrybuty tak cienkie, jak to tylko możliwe. Zazwyczaj wyświetlam użytkownikowi stronę, która tak naprawdę nie zawiera żadnych unikatowych informacji, a jedynie komunikat "potwierdź".
ta strona wydaje się odpowiedzieć na pytanie (za symboliczną problem, mam na myśli javascript i post-redirect-get części te nie są objęte tutaj.):
http://explodingjava.blogspot.com/2009/03/spring-mvc-synchronizer-token.html
- 1. Czy możliwe jest posiadanie formularza zagnieżdżonego (formularz: formularz) na wiosnę
- 2. Wartości formularza mają wartość Null zamiast "" na wiosnę
- 3. globalne właściwości na wiosnę
- 4. Warunkowe zatwierdzenia na wiosnę
- 5. MessageInterpolator na wiosnę
- 6. Dynamiczne formy na wiosnę
- 7. json na wiosnę-boot
- 8. Powielanie wskaźników pliku?
- 9. Przekazywanie właściwości maven na wiosnę
- 10. Niejawne kwalifikacje autowiring na wiosnę
- 11. tryb deweloperski na wiosnę MVC
- 12. JSF Zobacz zakres na wiosnę
- 13. Planowanie zadań na wiosnę/Java
- 14. Projektowanie systemu punktowego na wiosnę
- 15. Jak zainicjować aplikację na wiosnę?
- 16. Współbieżność z Hibernacja na wiosnę
- 17. Konfigurowanie JDO na wiosnę 3.1?
- 18. getServletConfig(). GetServletContext() odpowiednik na wiosnę
- 19. Wiele conversionServices na wiosnę-boot
- 20. Źródło autodire JNDI na wiosnę
- 21. Kiedy używać javax.inject.Provider na wiosnę?
- 22. Powielanie projektu XCode 4
- 23. Powielanie prostokątne/kratowe
- 24. Monad powielacze monad powielanie
- 25. Rozwijanie architektury opartej na wtyczce na wiosnę
- 26. Powielanie składników w czasie wykonywania
- 27. Powielanie pliku w Amazon S3
- 28. # 1060 - Powielanie nazwę kolumny 'id'
- 29. MATLAB: powielanie wektora 'n' razy
- 30. Powielanie plików podczas pakowania APK
To nie jest specyficzne dla każdej struktury, ale można zapobiec duplikowaniu przesyłania za pomocą jQuery. http://stackoverflow.com/questions/2830542/prevent-double-submission-of-forms-in-jquery/4473801#4473801 –