org.thymeleaf.exceptions.TemplateInputException: Error resolving template [design]。。。

最近在学习spring boot,跟着教程写了一个小项目。遇到一个错误

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [design], template might not exist or might not be accessible by any of the configured Template Resolvers

controller代码如下:

package com.example.demo.web;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;

import lombok.extern.slf4j.Slf4j;
import com.example.demo.Student;
import com.example.demo.Student.Type;
import com.example.demo.Team;

@Slf4j
@Controller
//@RestController
@RequestMapping("/design")
@SessionAttributes("tacoOrder")
public class DesignTeamController {

  @ModelAttribute
  public void addStuentsToModel(Model model) {
    List<Student> students = Arrays.asList(
      new Student("1000", "Alice", Type.MAN),
      new Student("1001", "Bob", Type.MAN),
      new Student("1002", "Cendy", Type.WOMAN),
      new Student("1003", "Danney", Type.MAN),
      new Student("1004", "Eric", Type.MAN),
      new Student("1005", "Zhangsan", Type.WOMAN),
      new Student("1006", "Lisi", Type.MAN),
      new Student("1007", "Wangwu", Type.MAN),
      new Student("1008", "Roc", Type.WOMAN)
    );

    Type[] types = Student.Type.values();
    for (Type type : types) {
      model.addAttribute(type.toString().toLowerCase(),
      filterByType(students, type));
    }
  }
  //@ResponseBody
  @GetMapping
  public String showDesignForm(Model model) {
    model.addAttribute("team", new Team());
    return "design";
  }
  private Iterable<Student> filterByType(
        List<Student> students, Type type) {
    return students
        .stream()
        .filter(x -> x.getType().equals(type))
        .collect(Collectors.toList());
  }
}

然后报错:
请添加图片描述
总是不能导向html页面。去网上也查了很多办法,包括试了@ResponseBody@RestController。这两个注释会让前端返回字符串,而不是页面。
后来终于找到一个办法。
GetMapping注释的方法,return时候改成:return "redirect:design.html";

  @GetMapping
  public String showDesignForm(Model model) {
    model.addAttribute("team", new Team());
    return "redirect:design.html";
  }

另一个办法

不改controller,在application.yml(没有就新建一个)里添加如下内容。

spring:
  thymeleaf:
    prefix: classpath:/static/
    suffix: .html
    cache: false #关闭缓存
### 回答1: 看到你遇到了一个模板解析异常(org.thymeleaf.exceptions.TemplateInputException)的错误。 这个错误通常发生在Thymeleaf模板引擎在解析模板文件时出现问题时。可能的原因包括模板语法错误、模板文件路径错误、模板文件不存在或不可读、模板文件编码错误等等。 为了解决这个问题,你可以尝试以下几个步骤: 1. 检查模板文件路径是否正确,并确保模板文件存在和可读。你可以使用绝对路径或相对路径来引用模板文件。如果使用相对路径,请确保它相对于应用程序的根目录。 2. 检查模板文件的编码是否正确。如果模板文件的编码不正确,可能会导致解析错误。通常情况下,UTF-8编码是一个比较好的选择。 3. 检查模板语法是否正确。确保你使用的是正确的Thymeleaf语法,并且所有的标签都被正确地关闭。 如果你仍然无法解决这个问题,你可以在你的代码中设置调试标志,以便在运行时输出更详细的错误信息,帮助你更好地定位问题。 ### 回答2: org.thymeleaf.exceptions.TemplateInputException: 模板解析过程中发生错误 在使用Thymeleaf时,有时会发生模板解析失败的情况,此时会抛出TemplateInputException异常。这个异常通常是由模板语法错误或者模板文件缺失等导致的。 其主要的原因有以下几点: 1. 模板语法错误:当模板中存在语法错误,例如语法不正确、标签闭合不正确等,就会导致模板解析失败,并抛出异常。 2. 模板文件缺失:当请求某个模板文件时,如果该文件不存在,就会抛出TemplateInputException异常。 3. 模板文件编码问题:当模板文件采用非UTF-8编码方式时,可能会导致乱码或解析失败。 为了解决这个问题,我们可以逐步排查错误原因。 首先,可以检查模板文件的语法是否正确,是否存在标签未闭合等语法错误;其次,可以检查模板文件是否存在,以及路径是否正确;最后,可以检查模板文件的编码方式,确保采用UTF-8编码方式。 除此之外,还可以在模板中添加debug信息来排查问题: ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Template</title> </head> <body> <div th:text="${debug}"></div> </body> </html> ``` 通过在模板中添加debug信息,可以查看当前模板中的变量、表达式等信息,帮助排查错误。 总之,在使用Thymeleaf时,需要注意模板的语法正确性、文件是否存在、编码方式是否正确等,从而确保模板解析成功,避免出现TemplateInputException异常。 ### 回答3: org.thymeleaf.exceptions.TemplateInputException是指在解析模板过程中出现了错误,可能是由于模板文件的格式不正确或存在语法错误导致的。 模板文件通常是由HTML标记和Thymeleaf模板引擎的特定语法组成,用于动态生成Web页面。当解析模板时,Thymeleaf引擎会查找并读取模板文件,将其中的语法转换为有效的HTML标记。如果模板文件存在语法错误或无法识别,就会抛出TemplateInputException这个异常。 为了防止这种异常出现,我们要遵循以下几条规则: 1. 模板文件应该遵循HTML标准,并使用合法的语法和标记。 2. 在Thymeleaf模板文件中使用特定的语法和标记时,应该遵循Thymeleaf的规则和示例,并确认语法的正确性。 3. 对于模板文件中出现的错误,应该及时检查并修改,以免影响页面的正常输出。 4. 在开发过程中,建议在IDE中启用模板文件的语法检查器,以及及时查看和调试错误信息,避免出错。 总之,遵循标准和规则,保持良好的开发习惯,会有助于避免出现TemplateInputException这种异常,提高Web应用的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值