Thymeleaf 找不到索引模板

Posted

技术标签:

【中文标题】Thymeleaf 找不到索引模板【英文标题】:Thymeleaf can't find index template 【发布时间】:2019-04-05 20:39:26 【问题描述】:

我得到错误:

org.thymeleaf.exceptions.TemplateInputException:错误解决 模板 [索引],模板可能不存在或可能无法访问 由任何已配置的模板解析器

该项目仅包含一个 IndexController 和位于 resources/templates/index.html 的 index.html

这是资源文件夹结构的图像:

这是控制器中的方法:

@RequestMapping(value = "/", "/home", "/index")
public String index()
    return "index";

【问题讨论】:

Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers的可能重复 【参考方案1】:

尝试分别映射它们,看看是否能解决问题。尝试以下索引。

  @GetMapping("index")
    public String getIndex()
        return "index"; 
    

如您所见,我将方法名称从 index 更改为 getIndex,这样命名更有意义。

【讨论】:

B.该代码仍然出现相同的错误。感谢您的回复。 还是什么都没有.. 太奇怪了,在此之前我已经完成了一些零问题的项目.. 你能发布你的 index.html 的内容吗? <html lang="en" class="k-webkit k-webkit43"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Index</title> </head> <body> <h1>Index</h1> </body> </html> 你的第一个 HTML 标签应该指向 thymeleaf。它应该看起来像这样:thymeleaf.org">【参考方案2】:

我不知道您是如何配置 Thmeleaf bean 的,但为了使用位于您的模板文件夹中的模板,您应该具有与下面类似的配置。

@Bean
@Description("Thymeleaf template resolver serving HTML 5")
public ClassLoaderTemplateResolver templateResolver() 
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    // Set prefix should do the trick.
    templateResolver.setPrefix("templates/");
    templateResolver.setCacheable(false);
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCharacterEncoding("UTF-8");
    return templateResolver;

另外,如果我没记错的话,默认情况下资源包被用作基础文件夹,所以如果你在/index之前添加模板,它应该可以工作。

@RequestMapping(value = "/", "/home", "/index")
public String index()
    return "templates/index";

【讨论】:

您介意添加您的 bean 配置吗?这与 Spring 无法找到资源有关。 另外,如果你没有任何 TemplateResolver,我相信它应该是“templates/index.html”。

以上是关于Thymeleaf 找不到索引模板的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot第九章 Thymeleaf 模板引擎

thymeleaf 无法正常解析页面(本地可以正常访问某个请求,并可以返回页面,但服务端访问出现找不到模板)

Thymeleaf 页面表达式基础

带有 Spring Boot 的 Thymeleaf - 找不到静态资产 (CSS)

SpringBoot入门篇--Thymeleaf引擎模板的基本使用方法

springboot+thymeleaf项目中使用th:replace访问templates子目录下的模板,会报错找不到模板路径