Przejdź do treści
Strona główna » Spring w Akcji 2.11

Spring w Akcji 2.11

Spis treści | Spring w Akcji

  1. Wykonywanie walidacji przy wiązaniu formularza

Wykonywanie walidacji przy wiązaniu formularza

Teraz, gdy zadeklarowałeś jak Taco i Zamówienie powinny być walidowane, musimy ponownie odwiedzić każdy z kontrolerów, określając, że walidacja powinna być przeprowadzona, gdy formularze są POSTed do ich odpowiednich metod obsługi.
Aby zwalidować przesłane Taco, musisz dodać adnotację @Valid Java Bean Validation API do argumentu Taco w metodzie processDesign() kontrolera DesignTacoController.

Adnotacja @Valid mówi Spring MVC, aby wykonał walidację na obiekcie Taco po tym jak zostanie on powiązany z danymi formularza i przed wywołaniem metody processDesign(). Jeśli wystąpią jakiekolwiek błędy walidacji, szczegóły tych błędów zostaną przechwycone w obiekcie Errors, który zostanie przekazany do processDesign(). Pierwsze kilka linii processDesign() konsultuje obiekt Errors, pytając jego metodę hasErrors() czy są jakieś błędy walidacji. Jeśli są, metoda kończy pracę bez przetwarzania Taco i zwraca nazwę widoku „design”, aby formularz został ponownie wyświetlony.
Aby przeprowadzić walidację na złożonych obiektach Order, podobne zmiany są również wymagane w metodzie processOrder() kontrolera OrderController.

W obu przypadkach metoda będzie mogła przetworzyć przesłane dane, jeśli nie ma błędów walidacji. Jeśli istnieją błędy walidacji, żądanie zostanie przekazane do widoku formularza, aby dać użytkownikowi szansę na poprawienie swoich błędów.
Ale skąd użytkownik będzie wiedział, jakie błędy wymagają korekty? Chyba że nazwiesz błędy na formularzu, użytkownik będzie pozostawiony w zgadywaniu, jak skutecznie pod- mitać formularz.

Wyświetlanie błędów walidacyjnych

Thymeleaf oferuje wygodny dostęp do obiektu Errors poprzez właściwość pól i atrybut th:errors. Na przykład, aby wyświetlić błędy sprawdzania poprawności w polu numeru karty kredytowej, można dodać element , który używa tych odwołań do błędów w szablonie formularza zamówienia, jak pokazano poniżej.

Oprócz atrybutu class, który może być użyty do stylizacji błędu tak, aby przykuwał uwagę użytkownika, element wykorzystuje atrybut th:if, aby zdecydować, czy aby wyświetlić . Metoda hasErrors() właściwości Fields sprawdza, czy w polu ccNumber nie ma błędów. Jeśli tak, zostanie wyrenderowany.
Atrybut th:errors odwołuje się do pola ccNumber i zakładając, że w tym polu występują błędy, zastąpi zawartość zastępczą elementu komunikatem sprawdzania poprawności.
Jeśli umieścisz podobne tagi wokół formularza zamówienia dla innych pól, możesz zobaczyć formularz, który wygląda jak na rysunku 2.4, gdy podasz nieprawidłowe informacje. Błędy wskazują, że pola nazwy, miasta i kodu pocztowego pozostały puste, a wszystkie pola płatności nie spełniają kryteriów weryfikacji.

calculations

Pomocne linki

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *