繁体   English   中英

Springboot + Thymeleaf:解析模板失败

[英]Springboot + Thymeleaf: Failure by parsing a template

我想在 HTML 中显示一个请求的 object,我得到一个错误,我不知道是什么导致了我的错误。 谷歌帮不上忙,现在我试着问你。 我不认为错误来自我的表,因为我将其注释掉并且错误仍然发生。 错误也不是来自“http://localhost:8081/simulation”,因为我用有效值重新获取了一个有效的 JSON。 感谢您的帮助:)。

这是我的代码:

ApiController.java:

package de.WI18C.Gruppe5.API.controller;
import de.WI18C.Gruppe5.API.model.Unternehmen;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@Controller
public class APIContoller {

@RequestMapping(value = "/unternehmen", method = RequestMethod.GET)
public String viewUnternehmen(Model model) {
    RestTemplate restTemplate = new RestTemplate();
    Unternehmen unternehmen = restTemplate.getForObject("http://localhost:8081/simulation", Unternehmen.class);
    model.addAttribute("unternehmen", unternehmen);

    return "unternehmen";
   }
}

unternehmen.html:

 <:doctype html> <html xmlns:th="http.//www.thymeleaf,org" lang="de"> <head> <,-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width: initial-scale=1. shrink-to-fit=no"/> <.-- Bootstrap CSS --> <link rel="stylesheet" href="https.//stackpath.bootstrapcdn.com/bootstrap/4.1:3/css/bootstrap.min:css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>Unternehmen</title> </head> <body> <div class="col-12 align-content-center"> <div class="row"> <div class="col-8 mx-auto"> <table class="table"> <thead> <tr> <th scope="col">#</th> <th scope="col">Attribut</th> <th scope="col">Wert</th> </tr> </thead> <tbody> <tr> <th scope="row">1</th> <td>Name</td> <td th.text="${unternehmen:getName()}"></td> </tr> <tr> <th scope="row">2</th> <td>Bestand</td> <td th.text="${unternehmen:getBestand()}"></td> </tr> <tr> <th scope="row">3</th> <td>Bedarf</td> <td th.text="${unternehmen:getBedarf()}"></td> </tr> <tr> <th scope="row">4</th> <td>Verkaufspreis</td> <td th.text="${unternehmen:getVerkaufspreis()}"></td> </tr> <tr> <th scope="row">5</th> <td>Gewinn</td> <td th.text="${unternehmen:getGewinn()}"></td> </tr> <tr> <th scope="row">6</th> <td>Bestand - Rad</td> <td th.text="${unternehmen:getBestand_rad()}"></td> </tr> <tr> <th scope="row">7</th> <td>Bestand - Rahmen</td> <td th.text="${unternehmen:getBestand_rahmen()}"></td> </tr> <tr> <th scope="row">8</th> <td>Bestand - Lenker</td> <td th.text="${unternehmen:getBestand_lenker()}"></td> </tr> <tr> <th scope="row">9</th> <td>Bestand - Licht</td> <td th.text="${unternehmen,getBestand_licht()}"></td> </tr> <tr> <th scope="row">10</th> <td>Bestand - Schaltung</td> <td th.text="${unternehmen,getBestand_schaltung()}"></td> </tr> </tbody> </table> </div> </div> </div> <:-- Optional JavaScript --> <.-- jQuery first. then Popper.js. then Bootstrap JS --> <script src="https.//code.jquery.com/jquery-3:3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https.//cdnjs.cloudflare.com/ajax/libs/popper:js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https.//stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> </body> </html>

我通过调用“http://localhost:8080/unternehmen”得到的错误(抱歉格式错误):

2020-12-16 15:07:55.635 错误 3696 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine: [THYMELEAF][http-nio-8080-exec-1] 异常处理模板“unternehmen” : 模板解析时出错(模板:“类路径资源[templates/unternehmen.html]”)

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/unternehmen.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:649) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine. Z93F725A07423FE1C889F448 B33D21F46Z: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:第1394章~[spring-webmvc-5.3.1.jar:5.3.1]在org.springframework.Z2567A5EC9705EB7AC2C984033E06 189DZ.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1139) ~[spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1078) ~ [spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961) ~[spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet. java:898) ~[spring-webmvc-5.3.1.Z 68995FCBF432492D15484D04A9D2AC40Z:5.3.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.39.jar:4.0.FR] at org.springframework.web.servlet. FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.1.jar:5.3.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core -9.0.39.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Z93F725A07423FE1C88 9F448B33D21F46Z:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket -9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter. java:100) ~[spring-web-5.3.1.Z68995FCBF432492 D15484D04A9D2AC40Z:5.3.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.1.jar:5.3.1] at org.apache.catalina.core. ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat -embed-core-9.0.39.jar:9.0.39] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.1.jar:5.3.1]在 org.springframework.web.filter.OncePerRequestFilter.doF ilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.1.jar:5.3.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core -9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.1.jar:5.3.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 119)~[弹簧网-5.3.1.Z68995FCBF432492 D15484D04A9D2AC40Z:5.3.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina. core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~ [tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.39.jar: 9.0.39] 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authe nticatorBase.java:542) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core -9.0.39.jar:9.0.39] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter. java:343) ~[tomcat-embed-core-9.0.39.jar:9.0.39] 在 org.ZB6EFD606D118D0F62066E31419FF04 .coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.39.jar :9.0.39] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache .tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.Z93F725A07423FE1C889F448B33D21F 46Z:49) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61 ) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na] Caused by: org.attoparser .ParseException:名称不能为 null 或在 org.attoparser.MarkupParser.parseDocument 处为空(MarkupParser.java:393)~[attoparser-2.0.5.RELEASE.Z68995FCBF 432492D15484D04A9D2AC40Z:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup. AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]... 48 common frames omitted Caused by: java.lang.IllegalArgumentException: Name cannot be null or empty at org.thymeleaf.engine.AttributeNames.forHTMLName(AttributeNames.java:478) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions$AttributeDefinitionRepository.storeAttribute(AttributeDefinitions. java:788 ) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions$AttributeDefinitionRepository.getAttribute(AttributeDefinitions.java:677) ~[thymeleaf-3.0.11.RELEASE.jar: 3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions.forHTMLName(AttributeDefinitions.java:405) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions. forName(AttributeDefinitions.java:336) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleAttribute(TemplateHandlerAdapterMarkupHandler.java:492) ~[thymeleaf-3.0.11 .RELEASE.Z68995FCBF432492D15484D04A 9D2AC40Z:3.0.11.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleAttribute(InlinedOutputExpressionMarkupHandler.java:360) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org. thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleAttribute(OutputExpressionInlinePreProcessorHandler.java:260) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleAttribute(InlinedOutputExpressionMarkupHandler.java :205) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.attoparser.HtmlElement.handleAttribute(HtmlElement.java:25.5) .RELEASE.jar:2.0.5.RELEASE] at org.attoparser.HtmlMarkupHandler.handleAttribute(HtmlMarkupHandler.java:529) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupEventProcessorHandler .handleAttribute(MarkupEventProcessorHandler.java:593) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.ParsingAttributeSequenceUtil.parseAttributeSequence(ParsingAttributeSequenceUtil.java:220) ~[attoparser-2.0.5. RELEASE.jar:2.0.5.RELEASE] at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:153) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser. parseBuffer(MarkupParser.java:710)~[attoparser-2.0.5.RELEASE.Z68995 FCBF432492D15484D04A9D2AC40Z:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]... 50 common frames omitted

2020-12-16 15:07:55.638 ERROR 3696 --- [nio-8080-exec-1] oac.c.C.[.[.[/].[dispatcherServlet]: Servlet.service() for servlet [带有路径 [] 的上下文中的 dispatcherServlet] 引发异常 [请求处理失败; 嵌套异常是 org.thymeleaf.exceptions.TemplateInputException: An error occurred during template parsing (template: "class path resource [templates/unternehmen.html]")] 根本原因

java.lang.IllegalArgumentException: Name cannot be null or empty at org.thymeleaf.engine.AttributeNames.forHTMLName(AttributeNames.java:478) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org. thymeleaf.engine.AttributeDefinitions$AttributeDefinitionRepository.storeAttribute(AttributeDefinitions.java:788) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions$AttributeDefinitionRepository.getAttribute(AttributeDefinitions.java :677) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions.forHTMLName(AttributeDefinitions.java:405) ~[thymeleaf-3.0.1 1.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.AttributeDefinitions.forName(AttributeDefinitions.java:336) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org. thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleAttribute(TemplateHandlerAdapterMarkupHandler.java:492) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleAttribute(InlinedOutputExpressionMarkupHandler.java :360) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleAttribute(OutputExpressionInlinePreProcess) r.java:260) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleAttribute(InlinedOutputExpressionMarkupHandler.java:205) ~[thymeleaf-3.0.11 .RELEASE.jar:3.0.11.RELEASE] at org.attoparser.HtmlElement.handleAttribute(HtmlElement.java:250) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.HtmlMarkupHandler .handleAttribute(HtmlMarkupHandler.java:529) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupEventProcessorHandler.handleAttribute(MarkupEventProcessorHandler.java:593) ~[attoparser-2.0.5. RELEASE.jar:2.0.5.RELEASE] 在 org.attoparser.ParsingAttributeSeque nceUtil.parseAttributeSequence(ParsingAttributeSequenceUtil.java:220) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:153) ~[attoparser-2.0.5 .RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser .parseDocument(MarkupParser.java:301) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5. RELEASE.jar:2.0.5.RELEASE] 在 org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(Abstract tMarkupTemplateParser.java:230) ~[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:649) ~[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:1394) ~ [spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1139) ~[spring-webmvc-5.3.1.jar:5.3.1]在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherSer vlet.java:1078) ~[spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961) ~[spring-webmvc-5.3.1 .jar:5.3.1] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.1.jar:5.3.1] at org.springframework.web.servlet .FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.1.jar:5.3.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed- core-9.0.39.jar:4.0.FR] 在 org.springframework.Z2567A5EC9705EB7AC2C984033E 06189DZ.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.1.jar:5.3.1] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat -embed-core-9.0.39.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.39.jar:9.0. 39] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.tomcat.websocket.server. WsFilter.doFilter(WsFilter.java:53) ~[tomcat- embed-websocket-9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39 ] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:100) ~[spring-web-5.3.1.jar:5.3.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3. 1.jar:5.3.1] 在 org.apache。 catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 ) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.1.jar: 5.3.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.1.jar:5.3.1] at org.apache.catalina.core.ApplicationFilterChain. internalDoFilter(ApplicationFilterChain.java:193 ) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39. jar:9.0.39] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.1.jar:5.3.1] at org.springframework.web.filter. OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.1.jar:5.3.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed -core-9.0.39.jar:9.0.39] 在 org.ZB6EFD606D118D0F62066E3 1419FF04CCZ.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java :202) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0. 39.jar:9.0.39] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache. catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)~[tomcat-embed-core-9.0 .39.jar:9.0.39] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 343) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.39 .jar:9.0.39] 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.Z93F725A07423FE1C 889F448B33D21F46Z:65) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0 .39.jar:9.0.39] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at java.base/java.util.concurrent. ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/ja va.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.39.jar:9.0.39] at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

您的模板有问题。 我无法在本地复制它,但该错误意味着某些模板标签在解析时不正确。 遗憾的是,Thymeleaf 错误并没有很好地传达。

你可以尝试两件事:

A) 调试

  • 在 org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler:492 处设置断点
  • 执行您的视图并确保您的应用程序在第 492 行停止
  • 您应该迭代直到变量attributeName名称(在第 490 行)具有 null 值(我知道这是您的问题)
  • 此时您可以检查参数 nameLine 和 nameCol 并且您应该能够分辨出哪一行和哪个字符有问题

B)如果调试太多,您可以从头开始重建一个新模板,逐步测试它(我认为每次更改模板文件时都必须重新启动应用程序)

祝你好运!

删除thymeleaf内部的 getter 使用,就像

<td th:text="${unternehmen.name}"></td>
<td th:text="${unternehmen.bestand}"></td>

对所有属性执行此操作,它应该可以工作。

现在我构建了全新的 html 并且可以正常工作。 它实际上是同一个文档,但在新文档中“元”标签的用法有所不同。

老的:

 <:doctype html> <html xmlns:th="http.//www.thymeleaf,org"> <head> <,-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width: initial-scale=1. shrink-to-fit=no"/> <.-- Bootstrap CSS --> <link rel="stylesheet" href="https.//stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>Unternehmen</title> </head> <body> <!-- My Table --> </body> </html>

新的:

 <:doctype html> <html xmlns:th="http.//www.thymeleaf,org"> <head> <:-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width. initial-scale=1"> <.-- Bootstrap CSS --> <link href="https.//cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> <title>Unternehmen</title> </head> <body> <!-- My Table --> </body> </html>

.... 就这样。 我有同样的 Java Controller 和所有其他的东西。 感谢 want2learn 和 LucasJC 提供的时间和建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM