Validate form entries with Spring Boot

 

Початок роботи у Spring Boot, Частина 7 Перевірка записів форми за допомогою Spring Boot

Подивившись на архітектуру додатків Spring-boot в останньому дописі серії, настав час перевірити введення даних користувача на правильність синтаксису.

Компанія про тему

Записи на веб-сайті слід перевіряти та повідомляти, Spring Boot пропонує для цього перевірку початку.Записи на веб-сайті слід перевіряти та повідомляти, Spring Boot пропонує для цього перевірку початку.

Найпростіший спосіб перевірки записів форми у Spring Boot – це використання Bean Validation Framework, яка існує з 2017 року у формі Bean Validation 2.0. Інтеграція фреймворку відбувається шляхом додавання такої початкової залежності до POM:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Під капотом для цього використовується валідатор Hibernate, еталонна реалізація API перевірки. В Spring Tool Suite (STS), в якості альтернативи, модуль може бути інтегрований безпосередньо через контекстне меню: Клацніть правою кнопкою миші на pom.XML, а потім Spring & gt; Додайте початківці та причину перевірки залежності . Тому система перевірки готова до використання.

Як приклад об’єкта ми беремо особу, відому з попередніх внесків, яка тепер поширюється на електронну адресу. Відтворення відповідних методів набору та отримання тут опущено з міркувань простору, ви можете легко використовувати їх у STS через Source & gt; Створення гетерів та сетерів … нехай генерує:

public class Person {   private String firstname;
private String lastname;
private String email;
// ...
}

Перевірка властивостей особи здійснюється шляхом анотування відповідних властивостей. Наприклад, щоб заповнити ім’я та прізвище, анотація використовується для цих властивостей @NotBlank . Дійсний електронний лист можна надіслати @Email force:

public class Person {   @NotBlank
private String firstname;
   @NotBlank
private String lastname;
   @Email
private String email;
   // ...
}

Вид Thymeleaf для подання форми також уже відомий з попереднього допису, він також поширюється на електронну адресу:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
   <h1>Benutzerdaten eingeben:</h1>
<form action="https://www.dev-insider.de/formulareingaben-validieren-mit-spring-boot-a-996378/#" th:action="@{/}" th:object="${person}" method="post">
<p>
Vorname: <input type="text" th:field="*{firstname}" />
</p>
<p>
Nachname: <input type="text" th:field="*{lastname}" />
</p>
<p>
Email: <input type="text" th:field="*{email}" />
</p>
<p>
<input type="submit" value="Submit" /> <input type="reset"
value="Reset" />
</p>
</form>
</body>
</html>

У методі контролера, який отримує запит на повідомлення, анотація має @Valid перед об’єктом людини у списку аргументів new. Анотація потрібна для активації механізму перевірки:

@Controller
public class PersonController {
   @GetMapping("https://www.dev-insider.de/")
public String home(Model model) {
Person person = new Person();
model.addAttribute(person);
return "home";
}
   @PostMapping("https://www.dev-insider.de/")
public String home(@Valid Person person, Model model) {
model.addAttribute(person);
return "home";
}
}

Якщо зараз ви спробуєте надіслати форму з порожнім іменем або прізвищем або заповненою, але невірною адресою електронної пошти, на консолі відображається помилка і відображається сторінка помилки зі стеком. Приклад такого консольного повідомлення відтворено тут:

Field error in object 'person' on field 'firstname': rejected value []; codes [NotBlank.person.firstname,NotBlank.firstname,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [person.firstname,firstname]; arguments []; default message [firstname]]; default message [darf nicht leer sein]

Зміст повідомлення вказує на те, що перевірка спрацювала. Тільки візуалізація результату залишає бажати кращого. Можливо, користувача слід попередити про неправильне введення приміткою на сторінці з формою; не стеком, який важко читати.

Сторінка помилки з stracktrace створюється додаванням інтерфейсу BindingResult go до списку аргументів методу post. Об’єкт можна запитувати щодо можливих помилок. Тут, у прикладі, помилки лише виводяться, а потім перенаправляються назад у форму, але за допомогою перевірки без помилок її також можна переслати на сторінку успіху за допомогою Redirect:

@PostMapping("https://www.dev-insider.de/")
public String home(@Valid Person person, BindingResult bindingResult, Model model) {
   if (bindingResult.hasErrors()) {
bindingResult.getAllErrors().stream().forEach(System.out::println);
}
model.addAttribute(person);
return "home";
}

Помилки перевірки, що виникли, передаються у форму HTML і можуть відображатися там:

<p th:if="${#fields.hasErrors('firstname')}" th:errors="*{firstname}"/>

Текст повідомлення (“не повинен бути порожнім”) може бути використаний в анотації перевірки за допомогою атрибута повідомлення :

public class Person {   @NotBlank(message = "Vorname muss angegeben werden")
private String firstname;
}

Знайдено неправильні записи у формі.Знайдено неправильні записи у формі.

(Фото: доктор Коллер)

Як показує знімок екрана, результат досить корисний. На практиці текстові поля та повідомлення про помилки, що зазнали впливу, все ще можуть бути пофарбовані в червоний колір за допомогою CSS.

На додаток до анотацій, представлених вище, існує ще кілька анотацій, які можна використовувати, наприклад, для перевірки певних порогових значень чи значення логічної змінної:

Детальну інформацію про точне використання анотацій можна знайти в документації Hibernate Validator (Dedicated Team).

(ID: 47107076)

Ready to see us in action:

More To Explore

IWanta.tech
Logo
Enable registration in settings - general
Have any project in mind?

Contact us:

small_c_popup.png