zoukankan      html  css  js  c++  java
  • 在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;
    
  • 相关阅读:
    touch:创建文件及修改文件时间戳
    stat:查看文件时间参数
    获取二维数组里面实际存有数据的行数
    Math.Atan2 方法
    c#移位运算符("<<"及">>")
    c# 一维数组和二维数组的几种定义方式<转>
    C#异常处理总结
    C#图片灰度处理(位深度24→位深度8)、C#图片二值化处理(位深度8→位深度1)
    WinForm窗体及其控件的自适应
    C#的WinForm窗体美化
  • 原文地址:https://www.cnblogs.com/UUUP/p/8628689.html
Copyright © 2011-2022 走看看