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

Spring w Akcji 2.8

Spis treści | Spring w Akcji

  1. Controller
  2. Formularz Thymeleaf

Controller

Jeśli spojrzysz na formularz z listingu 2.3, 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.

Po raz kolejny korzystasz z adnotacji @Slf4j Lomboka, aby w runtime utworzyć wolny obiekt SLF4J Logger. Za chwilę użyjesz tego Loggera do rejestrowania szczegółów złożonego zamówienia.
@RequestMapping na poziomie klasy określa, że wszelkie metody obsługi żądań w tym kontrolerze będą obsługiwać żądania, których ścieżka zaczyna się od /orders. W połączeniu z @GetMapping na poziomie metody określa, że metoda orderForm() będzie obsługiwać żądania HTTP GET dla /orders/current.
Jeśli chodzi o samą metodę orderForm(), jest ona niezwykle podstawowa, zwracając jedynie logiczną nazwę widoku orderForm. Później poznasz sposób na przechowywanie tworów taco w bazie danych, powrócisz do tej metody i zmodyfikujesz ją tak, aby wypełniła model listą obiektów taco, które mają być umieszczone w zamówieniu.
Widok orderForm jest dostarczany przez szablon Thymeleaf o nazwie orderForm.html, który jest pokazany obok.

formularz thymeleaf

W większości widok orderForm.html to typowa zawartość HTML/Thymeleaf, z niewielką ilością informacji. Zauważ jednak, że znacznik różni się tutaj od znacznika użytego na listingu 2.3 tym, że określa on również akcję formularza. Bez określenia akcji, formularz przesłałby żądanie HTTP POST z powrotem do tego samego adresu URL, który zaprezentował formularz. Tutaj jednak określasz, że formularz powinien zostać przesłany do /orders (używając operatora @{…} Thymeleaf dla ścieżki kontekstowej).
Dlatego będziesz musiał dodać kolejną metodę do swojej klasy OrderController, która obsługuje żądania POST dla /orders. Nie będziesz miał sposobu na przechowywanie zamówień aż do następnego rozdziału, więc zachowasz prostotę – coś w stylu tego, co widzisz na następnym listingu.

calculations

Pomocne linki

Dodaj komentarz

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