EПроблема с Thymeleaf

Я пытаюсь использовать простое веб-приложение, используя 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)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
77
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте изменить свой код в контроллере на:

@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 проверьте изменения, которые я внес в свой ответ.

dziki 19.04.2019 20:58

@Glasch попробуйте заменить session.getId на session.Id или session.id

dziki 19.04.2019 21:13

Никаких изменений, тот же stackTrace.

Glasch 19.04.2019 21:25
Ответ принят как подходящий

Я нашел решение! Это было довольно легко. "сессия" - это зарезервированное слово, и когда я изменил свой код на это, он работает хорошо.

<table>
    <tr th:each = "formsession : ${sessions}">
        <td th:text = "${formsession.id}">1</td>
    </tr>
</table>

Другие вопросы по теме