Я пытаюсь использовать простое веб-приложение, используя Spring-Boot, Thymeleaf и Hibernate. Спящий режим работает хорошо: список сеансов не пуст.
Thymeleaf не показывает мою точку зрения. Я новичок и не могу решить эту проблему, пожалуйста, помогите.
@Controller
public class IndexController {
@Autowired
FormSessionRepository formSessionRepository;
@RequestMapping("/")
public ModelAndView index() {
ModelAndView index = new ModelAndView("index");
List<FormSession> sessions = formSessionRepository.findAll();
index.addObject("sessions", sessions);
return index;
}
}
<!DOCTYPE HTML>
<html th = "http://thymeleaf.org" xmlns:th = "http://java.sun.com/xml/ns/persistence/orm">
<header><title>Home Page</title></header>
<link href = "button.css" rel = "stylesheet">
<body>
<div class = "wrapper">
<a href = "#" class = "button"/>GET RESPONSE</a>
<a href = "#" class = "button"/>GET RESPONSE</a>
<a href = "#" class = "button"/>GET RESPONSE</a>
</div>
<table>
<tr th:each = "session : ${sessions}">
<td th:text = "${session.getId}">1</td>
</tr>
</table>
</body>
</html>
Трассировка стека ошибок:
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: "class path resource [templates/index.html]")
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/index.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100)
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072)
at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362)
at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1370)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1116)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)




Попробуйте изменить свой код в контроллере на:
@RequestMapping("/")
public ModelAndView index(Model model) {
ModelAndView index = new ModelAndView("index");
List<FormSession> sessions = formSessionRepository.findAll();
model.addAttribute("sessions", sessions);
return index;
}
и пока вы используете Thymeleaf, вероятно, будет достаточно использовать:
@RequestMapping("/")
public String index(Model model) {
List<FormSession> sessions = formSessionRepository.findAll();
model.addAttribute("sessions", sessions);
return "index";
}
@Glasch попробуйте заменить session.getId на session.Id или session.id
Никаких изменений, тот же stackTrace.
Я нашел решение! Это было довольно легко. "сессия" - это зарезервированное слово, и когда я изменил свой код на это, он работает хорошо.
<table>
<tr th:each = "formsession : ${sessions}">
<td th:text = "${formsession.id}">1</td>
</tr>
</table>
@Glasch проверьте изменения, которые я внес в свой ответ.