You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.2.2模板解析错误:/与product模板无法访问求助

问题分析与解决办法

一、/logout接口500错误的原因及修复

你遇到的500错误核心是视图解析器误解了返回值的作用:
当前logout方法返回"/",Spring Boot会把这个字符串当作Thymeleaf模板的文件名去查找,但显然不存在名为/的模板文件,所以抛出了TemplateInputException。

要实现注销后跳转到根路径,你需要明确告诉Spring执行重定向操作,而非渲染模板。修改代码如下:

@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException {
    request.logout();
    // 使用redirect:前缀触发重定向,而非查找模板文件
    return "redirect:/";
}

二、/products接口无法工作的原因及修复

从代码逻辑看,这里存在明显的错误:
你注入的repository是UserRepository,但却把它查询出的用户列表放到了products模型属性中,传给product模板。这会导致前端模板无法正确渲染产品数据,甚至直接引发页面逻辑报错。

正确的做法是使用ProductService(或对应的ProductRepository)来获取产品列表,修改代码如下:

@GetMapping(path = "/products")
public String getProducts(Model model){
    // 调用productService获取产品数据,而非UserRepository的用户数据
    model.addAttribute("products", productService.findAll());
    return "product";
}

注:如果ProductService中没有findAll方法,你需要先在ProductService中实现对应的产品查询逻辑,或者直接注入ProductRepository来调用findAll()。

额外注意点

你提到模板文件是product.ftl(FreeMarker格式),请确保你的Spring Boot项目中已经正确引入了FreeMarker依赖,否则默认的Thymeleaf解析器无法识别.ftl后缀的模板文件。如果是Maven项目,可以在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

内容的提问来源于stack exchange,提问作者victory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:12:50