通过Spring Boot与thymeleaf模板一起提供静态内容

通过Spring Boot与thymeleaf模板一起提供静态内容,spring,thymeleaf,spring-boot,Spring,Thymeleaf,Spring Boot,我很难想象Spring Boot使用thymeleaf,但仍然提供静态内容。我的资源目录中有两个目录:“/static”和“/templates”。根据Spring引导文档,默认情况下thymeleaf应该在templates目录中找到thymeleaf模板。当我尝试使用模板时,我得到了404 来自我的控制器的相关代码: @RequestMapping("/") public ModelAndView index() { return new ModelAndView("index.ht

我很难想象Spring Boot使用thymeleaf,但仍然提供静态内容。我的资源目录中有两个目录:“/static”和“/templates”。根据Spring引导文档,默认情况下thymeleaf应该在templates目录中找到thymeleaf模板。当我尝试使用模板时,我得到了404

来自我的控制器的相关代码:

@RequestMapping("/")
public ModelAndView index() {
    return new ModelAndView("index.html");
}

@RequestMapping(value = "/test")
public ModelAndView test() {
    return new ModelAndView("test");
}
index.html位于resources/static中,test.html位于resources/templates中

html工作正常,但如果您尝试在浏览器中打开/测试,它会抛出404,表示找不到thymeleaf模板


我真的很感谢你的帮助。我被难住了。

任何未通过ThymeleafViewResolver(您的/resources/static)的页面都需要删除

 /**
 * Configures a {@link ThymeleafViewResolver}
 * 
 * @return the configured {@code ThymeleafViewResolver}
 */
@Bean
public ThymeleafViewResolver thymeleafViewResolver()
{
    String[] excludedViews = new String[]{
        "/resources/static/*"};

    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(templateEngine());
    resolver.setOrder(1);
    /*
     * This is how we get around Thymeleaf view resolvers throwing an error instead of returning
     * of null and allowing the next view resolver in the {@see
     * DispatcherServlet#resolveViewName(String, Map<String, Object>, Locale,
     * HttpServletRequest)} to resolve the view.
     */
    resolver.setExcludedViewNames(excludedViews);
    return resolver;
}
/**
*配置{@link@eleafviewsolver}
* 
*@返回已配置的{@code@eleafviewsolver}
*/
@豆子
公共thymeleafviewsolver thymeleafviewsolver()
{
字符串[]excludedViews=新字符串[]{
“/resources/static/*”};
ThymileAfViewResolver解析器=新的ThymileAfViewResolver();
resolver.setTemplateEngine(templateEngine());
解析程序设置顺序(1);
/*
*这就是我们如何绕过ELEAF视图解析器抛出错误而不是返回错误的方法
*允许{@see中的下一个视图解析器
*DispatcherServlet#resolveViewName(字符串、映射、区域设置、,
*HttpServletRequest)}来解析该视图。
*/
冲突解决程序设置ExcludedViewNames(excludedViews);
返回解析器;
}

您是否尝试只返回模板的字符串名称而不返回ModelAndview?
并按照?

中的说明对您的ModelAttributes进行注释。请同时发布您的thymeleaf配置。您可以发布您的Spring引导配置吗?