qidao123.com技术社区-IT企服评测·应用市场

标题: Springboot6.x配置thymeleaf的大概bug [打印本页]

作者: 一给    时间: 2025-3-14 17:22
标题: Springboot6.x配置thymeleaf的大概bug
很久没有搞springboot的配置了。
业务必要,必要通过后端提供模板引擎服务(对于小型项目,这个比前后分离的好太多了)。
但是非常操蛋的是,总是提示模板引擎解析失败,无法找到资源。折腾了好半天!
框架阐明
springboot版本-3.4.3
JAVA-JDK17
 
如果是开辟环境,例如eclipse,idea,vscode中都是很好,没有任何问题,但是一旦打成jar运行,就会提示找不到资源!
依稀记得一点:如果实现了WebMvcConfigurer,那么在applicaton.yml做的一些配置大概就有问题。
于是使用java代码界说模板引擎,如下:
  1. /**
  2.          * thymeleaf 模板解析器
  3.          * @return
  4.          */
  5.         @Bean
  6.         public ITemplateResolver templateResolver() {
  7.                 SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
  8.                 resolver.setPrefix("classpath:/static/");
  9.                 resolver.setSuffix(".html");
  10.                 resolver.setTemplateMode("HTML");
  11.                 resolver.setCharacterEncoding("UTF-8");
  12.                 resolver.setCacheable(false);
  13.                 return resolver;
  14.         }
  15.         /**
  16.          * spring模板引擎
  17.          * @param templateResolver
  18.          * @return
  19.          */
  20.         @Bean
  21.         public TemplateEngine templateEngine(ITemplateResolver templateResolver) {
  22.                 SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  23.                 templateEngine.setTemplateResolver(templateResolver);
  24.                 return templateEngine;
  25.         }
复制代码
并把application.yml中的部门注释掉:

 
重启,依然提示:
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [static//catch/catch-index.html]")
看起来好像路径有问题,于是抱着试一试的心态,修改了java代码:
  1. @RequestMapping("/catch")
  2. public ModelAndView catch(
  3.         @RequestParam(value="code",required=false) String code                
  4.         ) {
  5.         //ModelAndView mv=new ModelAndView("/catch/catch-index.html");       
  6.         ModelAndView mv=new ModelAndView("catch/catch-index.html");       
  7.         return mv;
  8. }
复制代码
结果居然可以了!
只能这么总结:
1.如果实现了WebMvcConfigurer,那么就不要在yml中配置thymeleaf
2.在返回ModelAndView的代码中,路径最前面不要加/
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4