Spring Boot - Thymeleaf 模板

Posted

技术标签:

【中文标题】Spring Boot - Thymeleaf 模板【英文标题】:Spring Boot - Thymeleaf template 【发布时间】:2016-01-26 20:41:11 【问题描述】:

我正在使用 Spring Boot 1.2.7 和 Thymeleaf。

所有的 html 页面都在 src/main/resource/templates 文件夹中,当我在控制器中说 return "<viewName>" 时,一切正常。

现在,我想为 AngularJS 使用不同的文件夹结构。

想将页面移动到其他文件夹,例如webapps/pages

尝试如下配置解析器,

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter 
    @Bean
    public ServletContextTemplateResolver getViewResolver() 
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
        resolver.setPrefix("webapps/pages/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("LEGACYHTML5");
        return resolver;
    

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) 
        configurer.enable();
    

仍然无法工作...我是否缺少任何其他配置,或者在这种情况下我不应该使用 Thymeleaf?

pom.xml 供你参考,

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

【问题讨论】:

【参考方案1】:

如果您不想使用标准配置,可以在application.properties(或application.yml)文件中配置一个TemplateResolver。您可以在the docs 中找到可用选项列表。

然后介绍一个新的@Configuration 以获得额外的TemplateResolvers:

@Configuration
public class ThymeleafConfig 

    @Autowired
    private SpringTemplateEngine templateEngine;

    @PostConstruct
    public void init() 
        ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();

        resolver.setPrefix("webapps/pages/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("LEGACYHTML5");
        resolver.setOrder(templateEngine.getTemplateResolvers().size());

        templateEngine.addTemplateResolver(resolver);
    


【讨论】:

我希望模板中的文件少,webapps/pages 下的文件少。有可能吗? 对不起,我看错了你的问题。不过应该是可以的。我将编辑我的答案。 还是不行。我在 application.properties spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html spring.thymeleaf.mode=LEGACYHTML5 和上面的配置文件中添加了 /templates。但是 /webapp./pages/ 不起作用 你配置第二个 TemplateResolver 是否完全如上所示?请注意,前缀没有前面的 classpath:/ 或斜杠。我试过这个 sn-p,它对我有用。 是的,我也有同样的事情。

以上是关于Spring Boot - Thymeleaf 模板的主要内容,如果未能解决你的问题,请参考以下文章

spring boot整合Thymeleaf

Spring Boot2:使用Spring Boot结合Thymeleaf模板引擎使用总结

Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例

Spring Boot 学习笔记--整合Thymeleaf

Spring Boot入门——thymeleaf模板使用

Spring Boot模板引擎Thymeleaf demo