【问题标题】:How to get Thymeleaf to process html in the static folder?如何让 Thymeleaf 处理静态文件夹中的 html?
【发布时间】:2016-06-14 23:10:05
【问题描述】:

我很难弄清楚如何让 Thymeleaf 处理 index.html

src/main/resources/static 

Thymeleaf 在模板目录中完美运行,无需配置:

src/main/resources/templates

环境是带有 Maven 的 Spring Boot。它使用 Yeoman 转换 index.html、CSS 和 JS。我需要所有这些文件都在同一个目录树中。

IDK 如果这是足够的信息,但下面是我的ThymeleafConfig

package org.jeremu.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;

import java.util.HashSet;
import java.util.Set;

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        Set<ITemplateResolver> resolvers = new HashSet<ITemplateResolver>();
        resolvers.add(defaultWebTemplateResolver());
        resolvers.add(emailTemplateResolver());
        templateEngine.setTemplateResolvers(resolvers);
        return templateEngine;
    }

    @Bean
    public ClassLoaderTemplateResolver defaultWebTemplateResolver(){
        ClassLoaderTemplateResolver webTemplateResolver = new ClassLoaderTemplateResolver();
        webTemplateResolver.setPrefix("static/");
        webTemplateResolver.setSuffix(".html");
        webTemplateResolver.setTemplateMode("HTML5");
        webTemplateResolver.setCharacterEncoding("UTF-8");
        webTemplateResolver.setOrder(2);
        return webTemplateResolver;
    }

    @Bean
    public ClassLoaderTemplateResolver emailTemplateResolver(){
        ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
        emailTemplateResolver.setPrefix("templates/email/");
        emailTemplateResolver.setSuffix(".html");
        emailTemplateResolver.setTemplateMode("HTML5");
        emailTemplateResolver.setCharacterEncoding("UTF-8");
        emailTemplateResolver.setOrder(1);

        return emailTemplateResolver;
    }

    @Bean
    ViewResolver viewResolver(){
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setOrder(1);
        return resolver;
    }
}

【问题讨论】:

  • FWIW 我正在使用 org.thymeleaf » thymeleaf-spring4 2.1.4.RELEASE,它默认是 Spring Boot Thymeleaf Starter » 1.3.0.RELEASE

标签: maven spring-mvc spring-boot yeoman thymeleaf


【解决方案1】:

尝试在您的 application.properties 文件中使用此设置:

spring.thymeleaf.prefix=classpath:/static/

【讨论】:

  • 感谢您的回复,但不幸的是,这对我不起作用。我尝试了 spring.thymeleaf.prefix=classpath:/static/ spring.thymeleaf.prefix="classpath:/static/" spring.thymeleaf.prefix=/static/ spring.thymeleaf.prefix=static
  • 这是一个完整的工作示例,使用 Spring Boot 1.3.0 github.com/kanderson450/stackoverflow-q37823580从 src/main/resources/static 处理 Thymeleaf 模板@
  • 哇哦……它成功了!当我将 IndexController 更改为 index 时,我的 IndexController 返回了 "forward:/index.html";,效果很好!非常感谢!
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 2018-08-18
  • 2018-01-22
  • 2017-07-04
  • 2014-12-05
  • 2020-02-04
  • 1970-01-01
  • 2013-03-08
相关资源
最近更新 更多