【问题标题】:Thymeleaf can't find index templateThymeleaf 找不到索引模板
【发布时间】: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";
}

【问题讨论】:

标签: java spring thymeleaf


【解决方案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”。
猜你喜欢
  • 2020-08-27
  • 2019-11-22
  • 2017-06-21
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2015-12-12
相关资源
最近更新 更多