好吧,我知道这和mc确实扯不上啥关系,但是考虑到很多人都学过java,我就问一下吧
我在用thymeleaf写登录页面的时候,死活报错
html代码如下(在templates下)
复制代码java代码
复制代码然后就报错:
复制代码
真的无语了
我在用thymeleaf写登录页面的时候,死活报错
html代码如下(在templates下)
- <!DOCTYPE html>
- <html xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <p th:utext="welcome, + ${Username}"></p>
- <p>log in is success</p>
- </body>
- </html>
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestAttribute;
- import org.springframework.web.bind.annotation.ResponseBody;
- @Controller
- public class logInController {
- @PostMapping("/login-handler")
- public String handleLogIn(String Username, String Password, Model model) {
- System.out.println("username:" + Username + "; password:" + Password);
- model.addAttribute("Username",Username);
- return "sign-in/success.html";
- }
- @GetMapping("/try")
- public String handleTry(Model model) {
- model.addAttribute("Username", "user1");
- return "sign-in/success.html";
- }
- }
- This application has no explicit mapping for /error, so you are seeing this as a fallback.
- Thu Mar 24 00:03:37 CST 2022
- There was an unexpected error (type=Internal Server Error, status=500).
- An error happened during template parsing (template: "class path resource [templates/sign-in/success.html]")
- org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/sign-in/success.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:366)
- at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190)
- at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1401)
- at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1145)
- at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1084)
- at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
- at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
- at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
- at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
- at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
- at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
- at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
- at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
- at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
- at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
- at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
- at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
- at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
- at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
- at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
- at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
- at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
- at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
- at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
- at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
- at java.base/java.lang.Thread.run(Thread.java:833)
- Caused by: org.attoparser.ParseException: Could not parse as expression: "welcome, + ${Username}" (template: "sign-in/success.html" - line 8, col 8)
- at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
- at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
- at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
- ... 48 more
- Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "welcome, + ${Username}" (template: "sign-in/success.html" - line 8, col 8)
- at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:131)
- at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:62)
- at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:44)
- at org.thymeleaf.standard.processor.StandardUtextTagProcessor.doProcess(StandardUtextTagProcessor.java:71)
- at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
- at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)
- at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)
- at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)
- at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleOpenElementEnd(TemplateHandlerAdapterMarkupHandler.java:304)
- at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:278)
- at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleOpenElementEnd(OutputExpressionInlinePreProcessorHandler.java:186)
- at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:124)
- at org.attoparser.HtmlElement.handleOpenElementEnd(HtmlElement.java:109)
- at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297)
- at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402)
- at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159)
- at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710)
- at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301)
- ... 50 more
真的无语了
return "sign-in/success";试试
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org" lang="en">试试
xmlns:th="http://www.thymeleaf.org" lang="en">试试
感谢,但是好像还是报错。。。
字符串字面量需要用单引号包起来。
复制代码
- <p th:utext="'welcome, ' + ${Username}"></p>