解析模板时出错 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问

Posted

技术标签:

【中文标题】解析模板时出错 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问【英文标题】:Error resolving template [/], template might not exist or might not be accessible by any of the configured Template Resolvers 【发布时间】:2020-06-30 12:19:09 【问题描述】:

我使用的是 spring boot 2.2.2,旧的 spring 和依赖项可以正常工作,现在相同的代码不起作用

package com.project.productapp.controller;

import com.project.productapp.service.ProductService;
import com.project.productapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

@Controller
public class ProductController 

@Autowired
ProductService productService;

@Autowired
private UserRepository repository;

@GetMapping(path = "/products")
public String getProducts(Model model)
    model.addAttribute("products", repository.findAll());
    return "product";


@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException 
    request.logout();
    return "/";


getProducts 或注销都不起作用。如果我设置断点,它就会被命中。我使用浏览器请求它,去http://localhost:8081/logout

错误:

2020 年 3 月 19 日星期四 11:58:45 CET 出现意外错误 (类型=内部服务器错误,状态=500)。解析模板时出错 [/],模板可能不存在或可能无法被任何 配置的模板解析器 org.thymeleaf.exceptions.TemplateInputException:错误解决 模板 [/],模板可能不存在或可能无法访问 任何已配置的模板解析器 org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) 在 org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) 在 org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) 在 org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189) 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373) 在 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:634) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

product.ftl 位置正确(在注销功能中甚至不需要)

【问题讨论】:

【参考方案1】:

好的,我想通了。

我正在尝试显示 product.ftl,并且该 扩展名不再默认支持,基于此网站 http://zetcode.com/springboot/freemarker/。前段时间对我有用,因为我使用的是旧的 Spring Boot 版本。在较新的版本中,.ftlh 扩展名现在被用作默认值。

解决方法是在 application.properties 中设置 freemarker 后缀如下:

spring.freemarker.suffix=.ftl

如果你对这个设置识别有问题,在pom.xml中,下面的依赖就足够了

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

我使用的 spring-boot-starter-thymeleaf 依赖给我带来了一些问题,所以如果需要,请删除它。

【讨论】:

以上是关于解析模板时出错 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问的主要内容,如果未能解决你的问题,请参考以下文章

解析模板时出错 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“欢迎”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“登录”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板 [registration] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“home”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“/index.html”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问