Пролетни параметри на заявка с мащерка

1. Въведение

В нашата статия Въведение в използването на Thymeleaf през пролетта видяхме как да обвържем потребителското въвеждане с обекти.

Използвахме th: object и th: field в шаблона Thymeleaf и @ModelAttribute в контролера, за да обвържем данните с Java обект. В тази статия ще разгледаме как да използваме пролетната анотация @RequestParam в комбинация с Thymeleaf.

2. Параметри във формуляри

Нека първо създадем прост контролер, който приема четири незадължителни параметъра на заявката:

@Controller public class MainController { @RequestMapping("/") public String index( @RequestParam(value = "participant", required = false) String participant, @RequestParam(value = "country", required = false) String country, @RequestParam(value = "action", required = false) String action, @RequestParam(value = "id", required = false) Integer id, Model model ) { model.addAttribute("id", id); List userIds = asList(1,2,3,4); model.addAttribute("userIds", userIds); return "index"; } }

Името на нашия шаблон Thymeleaf е index.html . В следващите три раздела ще използваме различни елементи на HTML формуляр, за да може потребителят да предава данни на контролера.

2.1. Входен елемент

Първо, нека създадем прост формуляр с поле за въвеждане на текст и бутон за изпращане на формуляра:

Атрибутът th: name = ”участник” обвързва стойността на полето за въвеждане с параметъра участник на контролера. За да работи това, трябва да анотираме параметъра с @RequestParam (стойност = “участник”) .

2.2. Изберете елемент

По същия начин за елемента за избор на HTML:

   Germany Netherlands Poland Latvia  

Стойността на избраната опция е обвързана с параметъра държава , коментирана с @RequestParam (стойност = “държава”) .

2.3. Бутон Елемент

Друг елемент, в който можем да използваме th: name е елементът бутон:

 check-in check-out 

В зависимост от това дали е натиснат първият или вторият бутон за изпращане на формуляра, стойността на действието на параметъра ще бъде или чек-ин или чек-аут .

3. Параметри в хипервръзки

Друг начин за предаване на параметрите на заявката на контролер е чрез хипервръзка:

И можем да добавим параметри в скоби:

Thymeleaf оценява горното, за да:

Използването на изрази на Thymeleaf за генериране на хипервръзки е особено полезно, ако искаме да присвоим стойности на параметри въз основа на променливи. Например, нека генерираме хипервръзка за всеки потребителски идентификатор:

  User [[${userId}]]

Можем да предадем списък с потребителски идентификатори като свойство на шаблона:

List userIds = asList(1,2,3); model.addAttribute("userIds", userIds);

И полученият HTML ще бъде:

 User 1

User 2

User 3

Параметърът ID в линка е свързан към параметър ID , анотирани с @RequestParam (стойност = "ID") .

4. Обобщение

В тази кратка статия видяхме как да използваме параметрите за заявка Spring в комбинация с Thymeleaf.

Първо, създадохме прост контролер, който приема параметри на заявката. Второ, разгледахме как да използваме Thymeleaf за генериране на HTML страница, която може да извика нашия контролер.

Пълният изходен код за всички примери в тази статия може да бъде намерен на GitHub.