【问题标题】:Spring Boot - Thymeleaf templateSpring Boot - Thymeleaf 模板
【发布时间】: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>

【问题讨论】:

    标签: angularjs spring-boot thymeleaf spring-boot-actuator


    【解决方案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,它对我有用。
    • 是的,我也有同样的事情。
    猜你喜欢
    • 2019-10-31
    • 2020-03-14
    • 2017-03-08
    • 2016-01-27
    • 2019-04-11
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多