Бесплатный курс по Java: от основ до продвинутого уровня
Теги Spring Form: Select, Radio, Checkbox
Помимо тега form:input, рассмотренного в прошлом уроке, есть также и другие теги с которыми мы можем связывать поля объекта в аттрибуте.
В этом уроке рассмотрим теги form:select, form:radio и form:checkbox.
Эти теги аналоги всем известных html тегов, которые предоставляют пользователю варианты выбора.
Напомним как они выглядят:
Добавим в класс объекта, который будет в аттрибуте, новые поля. Эти поля будут связываться с новыми тегами в форме так же, как в прошлом уроке связывался form:input с полем объекта.
package classes;
import java.util.LinkedHashMap;
import org.springframework.stereotype.Component;
@Component
public class SomeUser{
private String userName;
//создадим поле, в которое будет записываться
//то что выбрал пользователь в form:select
private String userCountry;
//в это поле сохр. значение form:radiobutton
private String userLanguage;
//в этот массив сохраняются
//значения form:checkbox. Массив это
//потому что пользователь может выбрать
//несколько значений checkbox.
private String[] userBrowser;
public SomeUser() {
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserCountry() {
return userCountry;
}
public void setUserCountry(String userCountry) {
this.userCountry = userCountry;
}
public String getUserLanguage() {
return userLanguage;
}
public void setUserLanguage(String userLanguage) {
this.userLanguage = userLanguage;
}
public String[] getUserBrowser() {
return userBrowser;
}
public void setUserBrowser(String[] userBrowser) {
this.userBrowser = userBrowser;
}
}
Давайте теперь свяжем новые поля в объекте в аттрибуте username c новыми тегами в форме на странице.
Страница с формой:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page isELIgnored="false" %>
Insert title here
username:
English
Ukrainian
Russian
Mozilla
Chrome
Edge
Как и в прошлом уроке, во втором обработчике выводятся на консоль значения, которые выбрал пользователь и происходит перенаправление на вторую страницу на которой будут отображены выбранные пользователем значения.
package classes;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping(“/FirstController”)
public class MVCcontroller{
@RequestMapping(“/FirstJSP”)
public String FirstJSP() {
return “JSPpage”;
}
@RequestMapping(“/SecondJSP”)
public String SecondJSP() {
return “JSPpage1”;
}
@RequestMapping(“/FormPage”)
public String FormPage() {
return “FormPage”;
}
@RequestMapping(“/FormProcessingController”)
public String FormProcessingController(
HttpServletRequest req, Model model) {
model.addAttribute(“resposeMsg”,
(req.getParameter(“username”)+” entered!”));
return “FormProcessingPage”;
}
@RequestMapping(“/FormTagPage”)
public String FormTagPage(Model model) {
model.addAttribute(“someuser”,new SomeUser());
return “FormTagPage”;
}
@RequestMapping(“/FormTagProcessor”)
public String FormTagProcessor(
@ModelAttribute(“username”) SomeUser someUser) {
System.out.println(someUser.getUserName());
//теперь выведем и выбранные пользователем
//значения в консоль.
System.out.println(someUser.getUserCountry());
System.out.println(someUser.getUserLanguage());
System.out.println(someUser.getUserBrowser());
//а также они будут отправлены на страницу
//FormTagProcessorPage.jsp и выведены там
return “FormTagProcessingPage”;
}
}
На странице на которую перенаправляет пользователя обработчик извлечем выбранные пользователем значения из объекта в аттрибуте username.
Заметьте, что все браузеры, которые выбрал пользователь хранятся в массиве и чтобы их всех вывести был использован тег библиотеки JSTL, который мы проходили ранее.
Настройте валидацию форм в Spring MVC с аннотациями @NotNull, @Size, @Min/@Max и @Pattern. Примеры проверки данных, обработка ошибок и кастомизация сообщений.
Time to read: 21
Введение в ORM с использованием Hibernate
Основы ORM с Hibernate: сохранение объектов в БД, настройка проекта, аннотации @Entity и @Table. Практический пример работы с сессиями, транзакциями и маппингом сущностей.
Time to read: 20
Обзор языка запросов HQL в Hibernate
Изучите HQL в Hibernate: объектно-ориентированный язык запросов для работы с БД через классы. Примеры запросов, сравнение с SQL и практическое применение в Java-приложениях.