springboot中直接使用thymeleaf出现的错误
最近作者在使用springboot+thymeleaf进行前后端混合开发时遇到了错误,并且这个错误是因为使用thymeleaf而导致的,作者感到很费解----我是直接使用springboot的构建工具来勾选thymeleaf框架的,难道官方配置好的框架也会有问题吗?错误原因显示,在解析类路径资源下的template模块中books.html文件错误,其实遇到解析文件错误,原因有很多,可能是文件位置
一,问题起因
最近作者在使用springboot+thymeleaf进行前后端混合开发时遇到了错误,并且这个错误是因为使用thymeleaf而导致的,作者感到很费解----我是直接使用springboot的构建工具来勾选thymeleaf框架的,难道官方配置好的框架也会有问题吗?
二,错误问题
下面是作者开发过程中遇到的问题:
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/books.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) ~[thymeleaf-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192) ~[thymeleaf-spring6-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1437) ~[spring-webmvc-6.2.5.jar:6.2.5]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1168) ~[spring-webmvc-6.2.5.jar:6.2.5]
at
错误原因显示,在解析类路径资源下的template模块中books.html文件错误,其实遇到解析文件错误,原因有很多,可能是文件位置放置错误,文件格式有问题,或是文件内部有语法错。
三,问题解决
经过作者的查证,原来是因为Spring Boot 6.x(Spring 6)为了增强安全性,默认禁用了在模板中直接访问#request
、#session
等隐式对象。这是为了防止模板中过度依赖Servlet API。
也就说springboot的版本与thymeleaf版本不兼容导致的,只需进行以下例句的修改即可:
<!-- 修改前 -->
<div th:if="${#session != null && #session.getAttribute('user') != null && #session.getAttribute('user').role == 'ADMIN'}">
<!-- 修改后 -->
<div th:if="${session != null && session.getAttribute('user') != null && session.getAttribute('user').role == 'ADMIN'}">
这样问题就解决了

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)