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

Thymeleaf无法检测到spring启动项目中的模板

施慈
2023-03-14

在我的Spring boot应用程序中有以下项目结构,我想在其中使用Thymeleaf

projectName
    -Gradle-Module1(Spring boot module)
        -build
        -src
            -main
            -resources
                -templates
                    index.html
        build.gradle
    -Gradle-Module2
        ...
    build.gradle
    ...

但是Spring引导找不到我的模板目录,显示警告

找不到模板位置:classpath:/templates/(请添加一些模板或检查您的Thymeleaf配置)

PS:我正在使用@EnableAutoConfiguration

在我的控制器代码中,我正在执行以下操作:

@Controller
@EnableAutoConfiguration
public class BaseController {

    @RequestMapping(value = "/")
    public String index() {
        return "index.html";
    }
}

索引。html文件只打印hello world。

因此,通常它应该查看src/resources/templates/(我想是同一个Gradle模块),但不知何故它无法找到它。

当我尝试访问localhost:8080时,我发现以下错误

解析模板“index.html”时出错,模板可能不存在或任何已配置的模板解析程序都无法访问该模板`

我有什么遗漏吗<欢迎指点。谢谢

共有3个答案

司马越
2023-03-14
@GetMapping("/")
public String index() {
    return "index";
}
廖华翰
2023-03-14

您应该只返回文件名。例如没有. hmtl

@RequestMapping(value = "/")
   public String index() {
   return "index";
}
端木令
2023-03-14

您必须配置Thymeleaf如下:

@Configuration
public class ThymeleafConfig {
    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setCacheable(false);
        templateResolver.setPrefix("classpath:/templates/");
        templateResolver.setSuffix(".html");
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
        springTemplateEngine.addTemplateResolver(templateResolver());
        return springTemplateEngine;
    }

    @Bean
    public ThymeleafViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setOrder(1);
        return viewResolver;
    }
}

Spring doc建议将@EnableAutoConfiguration注释添加到主@Configuration类中。

另外,你似乎有错误的项目结构,典型的包层次结构是:

src
  |- main
      |- java
      |- resources
          |- static
          |- templates
  |- test

在这种情况下,您的模板将在src/main/Resources/tem板中,而不是在src/Resources/tem板/中。

 类似资料:
  • Spring Boot是否可以在上下文中正确地加载旧的jar?旧jar中的pom文件是否不会受到影响,因为它引用了一些父级的spring版本以及使用相同版本的jar?或者这些JAR只使用spring boot添加的依赖关系? 有人能建议我哪里做错了吗?

  • 我按照这个https://spring.io/guides/gs/accessing-data-mysql/指南连接mysql db到Spring启动项目 但是在运行应用程序时出现以下错误,我正在生成Spring starter项目,并且在通过Spring工具套件创建项目时仅选择web、mysql和jpa框 以下是application.properties 和pom.xml 编辑:添加sprin

  • 我从Spring Initializr下载了一个spring-boot空项目,编译时它给我以下错误: 我已经尝试了jdk 8和12,看起来它并没有改变什么。 这是我的pom.xml 我已经在这里阅读了所有类似的主题,但我的问题不同。我必须使用Maven,但还没有添加任何插件。

  • 配置文件 模式。graphqls 错误

  • 这些天我正在构建一个简单的spring-boot项目。 当我执行程序时,我发现代码中有一些我无法纠正的错误。由于我是这方面的初学者,请帮我纠正所有这些错误。 控制台输出: 程序。 < code > application . properties 文件的代码段:

  • 我的问题是我未能显示胸腺叶模板。我怀疑配置错误,但我似乎找不到它。提前感谢:) 波姆。xml: 模板在: Spring配置: 控制器: 我正在尝试访问:并获得404。 另一件事,有人能解释(或给文档一个链接)哪个servlet被用来“返回”模板html吗?是Spring调度员servlet吗? 好的,所以我忘记了,谢谢@Benjamin c.然而,添加它会产生: