Spring Boot 报错:Error resolving template template might not exist or might not be accessible

博客讲述使用Spring Boot搭建项目时出现模板解析错误,提示模板可能不存在或不可访问。给出两种解决方法,一是检查代码中是否存在多余空格,如将“hello ”改为“hello”;二是在使用Thymeleaf时不要加“/xxxx”。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用spring boot搭建项目的时候报错:

Error resolving template template might not exist or might not be accessible

解决方法:

情况1:

public String thymeleaf(Model model){
    model.addAttribute("name", "mark");
    return "hello ";
}

仔细观察后发现:

"hello "中多了一个空格..改成“hello”即OK。

情况2:

public String thymeleaf(Model model){
    model.addAttribute("name", "mark");
    return "/hello";
}

在springboot中使用thymeleaf不需要加“/xxxx”

同样的改成:

public String thymeleaf(Model model){
    model.addAttribute("name", "mark");
    return "hello";
}

就OK

### Thymeleaf TemplateInputException 'Error resolving template [getUser]' 的解决方案 当遇到 `Thymeleaf` 报错 `'Error resolving template'` 时,通常意味着模板文件未找到或无法被正确加载。以下是可能导致此问题的原因及其对应的解决方法: #### 1. **检查模板路径** 确保模板文件位于默认的资源目录下。对于 Spring Boot,默认情况下,`Thymeleaf` 模板存储在 `src/main/resources/templates/` 文件夹中[^1]。如果模板名称为 `getUser.html`,则应将其放置在此路径下。 如果自定义了模板路径,则需确认配置是否正确。例如,在 `application.properties` 或 `application.yml` 中设置了如下属性: ```properties spring.thymeleaf.prefix=classpath:/custom_templates/ spring.thymeleaf.suffix=.html ``` 此时,模板应在 `src/main/resources/custom_templates/getUser.html` 下存在[^2]。 #### 2. **验证控制器映射** 控制器中的视图名必须与实际模板文件匹配。假设有一个请求 `/get_user` 映射到名为 `getUser` 的模板,则代码应类似于以下形式: ```java @Controller public class UserController { @GetMapping("/get_user") public String getUser(Model model) { model.addAttribute("name", "John Doe"); return "getUser"; // 返回 templates/getUser.html } } ``` 若返回值 `"getUser"` 不对应任何模板文件,将会抛出异常[^3]。 #### 3. **检查缓存机制** 默认情况下,`Thymeleaf` 启用了缓存功能以提高性能。但在开发阶段,这种行为可能会导致修改后的模板未能及时生效。可以通过禁用缓存来排查问题: ```properties spring.thymeleaf.cache=false ``` 这一设置允许每次请求重新编译模板,从而更容易发现潜在错误[^4]。 #### 4. **确认编码一致性** 模板文件应当保存为 UTF-8 编码格式,避免因字符集差异引发解析失败。此外,确保 HTML 结构合法无误,特别是标签闭合和属性书写方面。 #### 5. **调试日志分析** 开启详细的日志记录有助于定位具体原因。调整 logging level 至 DEBUG 可获取更多上下文信息: ```properties logging.level.org.thymeleaf=DEBUG ``` 日志会显示尝试查找模板的过程以及失败的具体位置。 --- ### 示例代码修正 假如当前实现存在问题,可以参考下面改进版的例子: ```java @Controller public class GoodsController { private final GoodsService goodsService; private final RedisService redisService; public GoodsController(GoodsService goodsService, RedisService redisService){ this.goodsService = goodsService; this.redisService = redisService; } @RequestMapping(value = "/to_list", produces = "text/html") public String list(Model model, MiaoshaUser user, HttpServletRequest request, HttpServletResponse response) { model.addAttribute("user", user); List<GoodsVo> goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); String cachedHtml = redisService.get(GoodsKey.getGoodsList, "", String.class); if (!StringUtils.isEmpty(cachedHtml)) { return cachedHtml; } WebContext context = new WebContext(request, response, request.getServletContext(), request.getLocale(), model.asMap()); String renderedHtml = thymeleafViewResolver.getTemplateEngine().process("goods_list", context); return renderedHtml; } } ``` 注意:这里假定 `thymeleafViewResolver` 已经正确定义并注入容器中。 --- ### 总结 综合以上几点建议逐一排查即可有效减少此类错误的发生概率。务必保证模板命名一致性和路径准确性的同时兼顾框架内部逻辑运作细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值