Я использую Spring Boot / Thymeleaf для создания формы, которая принимает адрес электронной почты, перенаправляет на страницу результатов, которая отображает принятое письмо и отправляет его стороннему API (аутентифицированному с помощью Oauth2). У меня проблемы с частью формы, я пытаюсь использовать Thymeleaf, чтобы принять ввод для отображения его на странице result.html. Я получаю сообщение об ошибке при попытке отобразить его на странице результатов, полная ошибка:
[THYMELEAF][http-nio-8080-exec-4] Exception processing template "result.html": Exception evaluating SpringEL expression: "signup.email" (template: "result.html" - line 10, col 4)
Я пытался следовать приведенным здесь примерам:
https://spring.io/guides/gs/handling-form-submission/
Я попытался изменить контроллер с @PostMapping
и @GetMapping
на @RequestMapping
и добавить комментарии, описанные в обходном пути, например:
<!--/*@thymesVar id="signup" type="com.mainconfig.controller1"*/-->
Вот код signup.html
, содержащий форму:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<html>
<head>
<title>My Jmml</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body style="background-color: #2B2B2B">
<br /><br />
<h2 style="text-align:center">Contact Information</h2>
<!-- Input Form -->
<!--/*@thymesVar id="signup" type="com.mainconfig.controller1"*/-->
<form action="#" th:action="@{/signup}" th:object="${signup}" method="post">
<div align="center">
<label>Email Address</label><br /><br />
<!--/*@thymesVar id="email" type="String"*/-->
<input type="text" th:field="*{email}" placeholder="Email" required />
<br />
<br />
<input class="submitbutton" type='submit' value='Submit'/>
<br />
</div>
</form>
</body>
</html>
Страница результатов, на которой должен отображаться адрес электронной почты (result.html):
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Thank you for your submission!</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Thank you for your submission!</h1>
<p th:text="'Email: ' + ${signup.email}" />
<a href="/index">Submit another message</a>
</body>
</html>
Контроллер:
@Controller
public class controller1 {
@RequestMapping (value = "/home")
public String home(Model model) {
return "index.html";
}
@RequestMapping(value = "/signup", method= RequestMethod.GET)
public String signupForm(Model model) {
model.addAttribute("signup", new emailInput());
return "signup.html";
}
@RequestMapping(value = "/signup", method= RequestMethod.POST)
public String signupSubmit(@ModelAttribute("email") emailInput email) {
return "result.html";
}
}
Ожидаемым выводом должна быть переменная электронной почты, отображаемая на странице результатов после ее сбора в форме регистрации.
Если у вас есть рекомендация о том, как лучше делать то, что я пытаюсь, я открыт для предложений! Я очень новичок в Spring / Thymeleaf, но у меня был опыт работы с Java / Jsp. Спасибо за любую помощь, пожалуйста, дайте мне знать, если вам нужно что-нибудь еще, чтобы помочь!