• 在springboot中添加自定义TemplateResolver


    我们都知道springboot的模板文件默认是在 classpath:templates/ 下面并且以.html结尾,但当在生产环境中我们需要动态的修改或替换某些模板文件时这样就不满足了,

    这时就需要自定义一个TemplateResolver来解析我们的模板文件了,具体实现如下:

    方法一(推荐):

    这种方式继承了之前默认的配置,如下这种设置只需把模板文件与可执行jar文件放于同一目录下的templates/下即可

    import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.Ordered;
    import org.thymeleaf.templateresolver.FileTemplateResolver;
    import org.thymeleaf.templateresolver.TemplateResolver;
    
    @Configuration
    public class WebConfig {
        
        @Bean
        public TemplateResolver fileTemplateResolver(ThymeleafProperties properties) {
            FileTemplateResolver resolver = new FileTemplateResolver();
            resolver.setOrder(Ordered.HIGHEST_PRECEDENCE);
            resolver.setCacheable(properties.isCache());
            resolver.setSuffix(properties.getSuffix());
            if (properties.getEncoding() != null) {
                resolver.setCharacterEncoding(properties.getEncoding().name());
            }
            resolver.setTemplateMode(properties.getMode());
            resolver.setPrefix("./templates/");
            return resolver;
        }
    
    }

    方法二:

    如下这种设置只需要把模板文件与可执行jar文件位于同一目录即可。

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
    import org.thymeleaf.templateresolver.TemplateResolver;
    
    @Configuration
    public class WebConfig {
    
        @Bean
        public TemplateResolver fileTemplateResolver() {
            SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
            resolver.setPrefix("file:");
            resolver.setSuffix(".html");
            resolver.setTemplateMode("HTML5");
    //        resolver.setOrder(Ordered.HIGHEST_PRECEDENCE);
            return resolver;
        }
    }

     测试:

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping
    public class TestController {
    
        @GetMapping("/download")
        public String getIndex() {
            return "test";
        }
    }

    测试中使用相对目录./templates/test.htmlclasspath:/templates/test.html, 注意设置模本文件的内容不同。

    在浏览器访问 http://localhost:8080/download 观察输出加载内容及顺序。

    经测试:模版加载顺序是自定义优先

        

    获取模板解析器

        // 注入自定义的模板解析器
        @Autowired
        @Qualifier("fileTemplateResolver")
        TemplateResolver fileTemplateResolver;
    
        // 注入默认的模板解析器
        @Autowired
        @Qualifier("defaultTemplateResolver")
        TemplateResolver defaultTemplateResolver;
    
  • 相关阅读:
    web单机优化
    html标签
    html基础
    jenkins api
    cobbler api
    Cobbler安装配置简单使用
    ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程
    在ubuntu12.04上安装6款顶级漂亮的BURG主题
    Setting up an OpenGL development environment in ubuntu
    c++ list 容器
  • 原文地址:https://www.cnblogs.com/UUUP/p/8628689.html
Copyright © 2020-2023  润新知