当前位置: 首页 > 知识库问答 >
问题:

当springboot打包jar时,Thymeleaf不会加载模板

孙乐逸
2023-03-14

我遇到了一个关于堆栈溢出的错误,我已经见过多次了,但是没有一个解决方案适合我。

基本上,我使用Thymeleaf 3运行Spring Boot 4,当我使用进行本地测试时,我的模板加载很好/格雷德卢·布特伦。

但是,当我打包jar并尝试运行它时,当我访问endpoint时,总是会出现以下错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers

我的模板都位于src/main/resources/templates/下,并且是以结尾的文件。html,例如登录。html

这是用于配置Thymeleaf模板解析器的@Configuration类:

@Configuration
@EnableWebMvc
@ComponentScan
public class TemplateConfig extends WebMvcConfigurerAdapter {

    @Bean
    @Description("Thymeleaf template resolver serving HTML 5")
    public ClassLoaderTemplateResolver templateResolverClassLoader() {

        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

        templateResolver.setPrefix("templates/");
        templateResolver.setCacheable(false);
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setOrder(2);

        return templateResolver;
    }

    @Bean
    public ServletContextTemplateResolver templateResolverServletContext() {
        final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    @Bean
    @Description("Thymeleaf template engine with Spring integration")
    public SpringTemplateEngine templateEngine() {

        SpringTemplateEngine templateEngine = new SpringTemplateEngine();

        final Set<TemplateResolver> templateResolvers = new HashSet<>();
        templateResolvers.add(templateResolverClassLoader());
        templateResolvers.add(templateResolverServletContext());
        templateEngine.setTemplateResolvers(templateResolvers);

        return templateEngine;
    }

    @Bean
    @Description("Thymeleaf view resolver")
    public ViewResolver viewResolver() {

        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();

        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setCharacterEncoding("UTF-8");

        return viewResolver;
    }

}

此外,如果我删除了上面的整个@Configuration类,它仍然会有相同的错误

我的身体里总是有胸腺素的东西。格拉德尔

compile("org.springframework.boot:spring-boot-starter-thymeleaf")

我错过了什么?谢谢!

共有1个答案

严兴旺
2023-03-14

我没有和Gradle合作,但是Maven,所以我会尝试考虑一些点,一旦可以帮助其他用户。Spring Bug的版本在配置上几乎没有差异,因此对于这个答案,考虑Spring Bug 1.5。10

  1. 由于Spring Boot使用约定优于配置,您需要为thymeleaf正常工作所做的就是在pom.xml中添加正确的依赖项(对于maven):
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>;

有了这个依赖项,thymeleaf就可以在资源/模板中查找html了。

    @SpringBootApplication
    @EntityScan(basePackageClasses = { Application.class })
    public class Application
    {    
        public static void main(String[] args)
        {
            SpringApplication.run(Application.class, args);
        }
    }

如果不想缓存模板,请在属性或yaml文件中通知。

Spring百里香。cache=false

 类似资料:
  • 现有一个springboot项目,通过扫描二维码查询信息,比如一棵树,扫描二维码后可以看到他相关的信息。但这个项目不止有树类型,还有道路,某个物品。所以将项目分模块开发,核心模块作为一个jar包,复制提供基础服务如数据导入导出。各类型构建成单独的jar。部署时需要那种类型就加载对应的jar。这样做是为了满足不同客户需求。 尝试: java -Xbootclasspath/a:file:./libs

  • 当我更改驻留在/templates中的thymeleaf.html文件时,我希望浏览器自动重新加载页面。我已经安装了live reload插件,它能够与Spring Boot服务器进行握手。但是,在修改thymeleaf模板文件时,我必须手动重新加载浏览器。我可能错过了什么。显然,我启用了,并且还手动更新了属性。spring devtools正确地将更改转发到构建目标中的任何模板或控制器,并且通过

  • 本文向大家介绍springBoot加入thymeleaf模板的方式,包括了springBoot加入thymeleaf模板的方式的使用技巧和注意事项,需要的朋友参考一下 1.新建springBoot项目 在前面有两种方式 2.加入thymeleaf模板引擎 SpringBoot推荐使用thymeleaf模板引擎 语法简单,功能更强大 要想引入thymeleaf,只需要在pom,xml文件中加入如下依

  • 我有一个带有spring boot的java项目,我需要加载应用程序。外部文件夹中的属性和依赖项jar。 我使用该应用程序进行了测试。类路径和加载程序中的属性。路径属性工作正常。 当我使用外部属性文件(我确信它们已被使用)时,加载程序。路径工作不正常,结果为ClassNotFound,因为JAR未加载。 此外,当我启动应用程序与**-Dloader.path=**xxx它的工作正常。 如何使用外部

  • 本文向大家介绍maven+springboot打成jar包的方法,包括了maven+springboot打成jar包的方法的使用技巧和注意事项,需要的朋友参考一下 maven的命令: 1.mvn clean package -DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包。 2.mvn clean:清理项目生产的临时文件,一般是模块下的target目录 3

  • 本文向大家介绍SpringBoot中的Thymeleaf模板,包括了SpringBoot中的Thymeleaf模板的使用技巧和注意事项,需要的朋友参考一下 一、前言     Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1、JSP 最明显的问题在于它看起来像HTML或XML,但它其实上并不是。大多数的JS