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

Spring w Akcji 2.7

Spis treści | Spring w Akcji

  1. Przetwarzanie składania formularzy

Przetwarzanie składania formularzy

Jeśli jeszcze raz przyjrzysz się znacznikowi w swoim widoku, możesz zauważyć, że jego atrybut method jest ustawiony na POST. Co więcej, nie deklaruje atrybutu action. Oznacza to, że gdy formularz zostanie przesłany, przeglądarka zbierze wszystkie dane w formularzu i wyśle je do serwera w żądaniu HTTP POST do tej samej ścieżki, dla której żądanie GET wyświetliło formularz – ścieżki /design.


Dlatego potrzebujesz metody obsługi kontrolera po stronie odbierającej to żądanie POST. Musisz napisać nową metodę handler w DesignTacoController, która obsłuży żądanie POST dla /design.
Na przykładzie poniżej użyłeś adnotacji @GetMapping, aby określić, że metoda show- DesignForm() powinna obsługiwać żądania HTTP GET dla /design. Podobnie jak @Get- Mapping obsługuje żądania GET, możesz użyć @PostMapping do obsługi żądań POST. Aby obsłużyć zgłoszenia projektów taco, dodaj do DesignTacoController metodę processDesign() z poniższego listingu.

W zastosowaniu do metody processDesign(), @PostMapping koordynuje z poziomem klasy @RequestMapping, aby wskazać, że processDesign() powinien obsługiwać żądania POST dla /design. To jest właśnie to, czego potrzebujesz, aby przetworzyć przesłane zapytanie.
Kiedy formularz jest przesyłany, pola formularza są wiązane z właściwościami obiektu Taco (którego klasa jest pokazana na następnym listingu), który jest przekazywany jako parametr do processDesign(). Od tego momentu metoda processDesign() może zrobić z obiektem Taco co tylko zechce.

Jak widać, Taco jest prostym obiektem domeny Java z kilkoma właściwościami. Podobnie jak Ingredient, klasa Taco posiada adnotacje @Data, aby automatycznie wygenerować dla Ciebie niezbędne metody JavaBean w czasie pracy.

Jeśli spojrzysz na formularz , zobaczysz kilka elementów typu checkbox, wszystkie z nazwą ingredients, oraz element wejściowy typu text o nazwie name. Te pola w formularzu odpowiadają bezpośrednio właściwościom ingredients i name klasy Taco.
Pole Name w formularzu musi jedynie przechwycić prostą wartość tekstową. Tak więc właściwość name klasy Taco jest typu String. Pola wyboru składników również mają wartości tekstowe, ale ponieważ można wybrać zero lub wiele z nich, właściwość ingredients, z którą są związane, jest listą, która przechwytuje każdy z wybranych składników.

calculations

Pomocne linki

Dodaj komentarz

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