У меня есть простая домашняя страница, которая должна отображать простое сообщение «Успех» после регистрации
home.html
<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/register">Register</a>
<span th:text="${message}"></span>
</body>
</html>
registration.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registration</title>
</head>
<body>
<form method="post" action="/register">
<input name="username" type="text">
<input name="password" type="password">
<input type="submit" name="register" value="Register">
</form>
</body>
</html>
Страница регистрации принимает имя пользователя и пароль, а затем отправляет запрос на контроллер, обрабатывающий страницу «/ register». В методе register
требуется объект RedirectAttributes
для присоединения атрибута fla sh с именем message
со строкой success
.
Controller.java
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@org.springframework.stereotype.Controller
public class Controller {
@GetMapping("/")
public String home() {
return "home";
}
@GetMapping("/register")
public String registerPage() {
return "registration";
}
@PostMapping("/register")
public String register(@ModelAttribute Registration registration, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "success");
return "redirect:/";
}
}
Registration.java
package com.example.demo;
import lombok.Data;
@Data
public class Registration {
String username;
String password;
}
Приложение работает, как и ожидалось, однако тимилеф не может разрешить переменную message
, поэтому она подчеркнута красным
<span th:text="${message}"></span>