Теги Spring Form: Select, Radio, Checkbox
Last updated: 11 мая 2025 г.Помимо тега form:input
, рассмотренного в прошлом уроке, есть также и другие теги с которыми мы можем связывать поля объекта в аттрибуте.
В этом уроке рассмотрим теги form:select, form:radio и form:checkbox.
Эти теги аналоги всем известных html тегов, которые предоставляют пользователю варианты выбора.
Напомним как они выглядят:

Добавим в класс объекта, который будет в аттрибуте, новые поля. Эти поля будут связываться с новыми тегами в форме так же, как в прошлом уроке связывался form:input
с полем объекта.
1package classes;
2
3import java.util.LinkedHashMap;
4
5import org.springframework.stereotype.Component;
6
7@Component
8public class SomeUser{
9 private String userName;
10 //создадим поле, в которое будет записываться
11 //то что выбрал пользователь в form:select
12 private String userCountry;
13 //в это поле сохр. значение form:radiobutton
14 private String userLanguage;
15 //в этот массив сохраняются
16 //значения form:checkbox. Массив это
17 //потому что пользователь может выбрать
18 //несколько значений checkbox.
19 private String[] userBrowser;
20
21 public SomeUser() {
22 }
23
24 public String getUserName() {
25 return userName;
26 }
27
28 public void setUserName(String userName) {
29 this.userName = userName;
30 }
31
32 public String getUserCountry() {
33 return userCountry;
34 }
35
36 public void setUserCountry(String userCountry) {
37 this.userCountry = userCountry;
38 }
39
40 public String getUserLanguage() {
41 return userLanguage;
42 }
43
44 public void setUserLanguage(String userLanguage) {
45 this.userLanguage = userLanguage;
46 }
47
48 public String[] getUserBrowser() {
49 return userBrowser;
50 }
51
52 public void setUserBrowser(String[] userBrowser) {
53 this.userBrowser = userBrowser;
54 }
55}
Давайте теперь свяжем новые поля в объекте в аттрибуте username
c новыми тегами в форме на странице.
Страница с формой:
1<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
2 pageEncoding="ISO-8859-1"%>
3<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
4<%@ page isELIgnored="false" %>
5<!DOCTYPE html>
6<html>
7<head>
8<meta charset="ISO-8859-1">
9<title>Insert title here</title>
10</head>
11<body>
12 <form:form action="FormTagProcessor" modelAttribute="someuser">
13 username: <form:input path="userName"/> <br/>
14 <!-- В форме можно использовать спринг версию тега select.
15 userCountry в аттрибуте path это также как и в случае с
16 текстовым полем выше часть имени методов геттера и сеттера
17 для поля userCountry в объекте, который находится
18 в аттрибуте someuser. То есть при отправке формы
19 то что выбрано в select будет сохранено в поле userCountry
20 с помощью сеттера этого поля. -->
21 <form:select path="userCountry">
22 <!-- Ниже опции в select. Пользователь может выбирать одну из них.
23 Здесь:
24 label - то что видит на странице, выбирает пользователь,
25 value - то что записывается в поле в объекте и отправляется
26 в обработчик -->
27 <form:option value="UKR" label="Ukraine"/>
28 <form:option value="USA" label="United States"/>
29 <form:option value="FRG" label="Germany"/>
30 </form:select><br/>
31 <!-- подобным образом можем добавить на форму radio buttons.
32 здесь все работает похожим образом -->
33 English <form:radiobutton path="userLanguage" value="English"/>
34 Ukrainian <form:radiobutton path="userLanguage" value="Ukrainian"/>
35 Russian <form:radiobutton path="userLanguage" value="Russian"/><br/>
36 <!-- подобным образом можем добавить на форму checkboxы.
37 здесь все работает похожим образом, только переменная в path
38 должна быть коллекцией или массивом, так как пользователь
39 может выбрать несколько вариантов -->
40 Mozilla <form:checkbox path="userBrowser" value="Mozilla"/>
41 Chrome <form:checkbox path="userBrowser" value="Chrome"/>
42 Edge <form:checkbox path="userBrowser" value="Edge"/><br/>
43 <input type="submit" value="submit"/> <br/>
44 </form:form>
45</body>
46</html>
Как и в прошлом уроке, во втором обработчике выводятся на консоль значения, которые выбрал пользователь и происходит перенаправление на вторую страницу на которой будут отображены выбранные пользователем значения.
1package classes;
2
3import javax.servlet.http.HttpServletRequest;
4
5@Controller
6@RequestMapping("/FirstController")
7public class MVCcontroller{
8 @RequestMapping("/FirstJSP")
9 public String FirstJSP() {
10 return "JSPpage";
11 }
12
13 @RequestMapping("/SecondJSP")
14 public String SecondJSP() {
15 return "JSPpage1";
16 }
17
18 @RequestMapping("/FormPage")
19 public String FormPage() {
20 return "FormPage";
21 }
22
23 @RequestMapping("/FormProcessingController")
24 public String FormProcessingController(
25 HttpServletRequest req, Model model) {
26 model.addAttribute("resposeMsg",
27 (req.getParameter("username")+" entered!"));
28 return "FormProcessingPage";
29 }
30
31 @RequestMapping("/FormTagPage")
32 public String FormTagPage(Model model) {
33 model.addAttribute("someuser",new SomeUser());
34 return "FormTagPage";
35 }
36
37 @RequestMapping("/FormTagProcessor")
38 public String FormTagProcessor(
39 @ModelAttribute("username") SomeUser someUser) {
40 System.out.println(someUser.getUserName());
41 //теперь выведем и выбранные пользователем
42 //значения в консоль.
43 System.out.println(someUser.getUserCountry());
44 System.out.println(someUser.getUserLanguage());
45 System.out.println(someUser.getUserBrowser());
46 //а также они будут отправлены на страницу
47 //FormTagProcessorPage.jsp и выведены там
48 return "FormTagProcessingPage";
49 }
50}
На странице на которую перенаправляет пользователя обработчик извлечем выбранные пользователем значения из объекта в аттрибуте username
.
Заметьте, что все браузеры, которые выбрал пользователь хранятся в массиве и чтобы их всех вывести был использован тег библиотеки JSTL, который мы проходили ранее.
1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2<%@ page isELIgnored="false" %>
3<html>
4<head>
5 <title>Auth Form</title>
6</head>
7<body>
8 <h2>${username.userName}</h2>
9 <h2>${username.userCountry}</h2>
10 <h2>${username.userLanguage}</h2>
11 <c:forEach items="${username.userBrowser}" var = "listelement">
12 <h2>${listelement}</h2>
13 </c:forEach>
14</body>
15</html>
Перейдем на страницу с формой через обработчик по пути /FormTagPage
и выберем значения у тегов.

Нажмем submit.

Видим, что выбранные значения новых тегов отобразились успешно на странице на которую нас перенаправил второй обработчик.
Следующие уроки
Валидация форм в Spring MVC
21
мин.
Введение в ORM с использованием Hibernate
20
мин.
Обзор языка запросов HQL в Hibernate
17
мин.