тимелист не может разрешить поле в Springboot - PullRequest
0 голосов
/ 01 августа 2020

У меня есть простая форма, которая отправляет объект с именем obj и значение с именем description моему контроллеру, а контроллер отправляет его в мою базу данных. Я использую репозиторий jpa. Сначала у меня была проблема с разрешением th:object="${obj}" в моей форме, но после прочтения сообщений о переполнении стека я добавил определение var для своего объекта, и это устранило проблему, но я все еще не могу использовать th:field в моем входном теге и если Просто пишу, получаю внутреннюю ошибку 500. th:name= работает без проблем, но мне нужно использовать th:field в моем проекте.

html страница

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--/*@thymesVar id="obj" type="springframework.controllers.view"*/-->
<form  th:action="@{/p/post}" th:object="${obj}" method="post">
    <input type="text" th:name="description" />
<!--<td><input type="text" th:field="*{description}"/></td> error happen here -->
    <input type="submit" value="submit">
</form>
</body>
</html>

контроллер

@Controller
@RequestMapping("/p")
public class view {
    @PostMapping("post")
    public String post(@ModelAttribute("obj")UnitOfMeasure unitOfMeasure){
        unitOfMeasureRepository.save(unitOfMeasure);
        return "home";
    }
}

журнал ошибок

ERROR 14380 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "post": An error happened during template parsing (template: "class path resource [templates/post.html]")

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/post.html]")
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1370) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1116) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:890) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.12.jar:9.0.12]

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

в этом случае проблем с листом тимьяна нет, ошибка произошла из-за того, что я не добавил объект в модель

 @GetMapping("/m")
    public String vri(Model model){
        model.addAttribute("obj", new UnitOfMeasure());
        return "post";
    }
    @PostMapping("/post")
    public String post(@ModelAttribute("obj") UnitOfMeasure unitOfMeasure, Model model){
       // model.addAttribute("obj", unitOfMeasure);

        unitOfMeasureRepository.save(unitOfMeasure);
        return "home";
    }
0 голосов
/ 01 августа 2020

Перед тем, как запрашивать объект из модели, вам необходимо ввести его в модель. Thymeleaf не сделает этого за вас. Подробнее здесь https://javamondays.com/problems-with-thymeleaf/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...