Топ-100Теги Spring Form: Select, Radio, Checkbox - CodOrbits
LogoCodOrbits

Раздел: Spring MVC

Раздел расскажет о Spring MVC — компоненте Spring для разработки веб-приложений с использованием архитектуры MVC.

Все разделы
Иконка Spring MVC

Теги 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
мин.

Similar Articles Icon
Divider

Введение в ORM с использованием Hibernate

20
мин.

Similar Articles Icon
Divider

Обзор языка запросов HQL в Hibernate

17
мин.

Similar Articles Icon