thymeleaf全局常量定义(非国际化)

简介: 微服务现在最流行的莫过于springboot,官方推荐两种模板语言,freemarker和thymeleaf,本文只介绍thymeleaf中如何定义全局常量。

微服务现在最流行的莫过于springboot,官方推荐两种模板语言,freemarker和thymeleaf,本文只介绍thymeleaf中如何定义全局常量。百度一搜thymeleaf的全局常量定义,都是让把常量写在“message_*”文件中,当然,做国际化的时候这个没问题 ,可是随着现在微服务大行其道,有很多不是国际化的东西需要定义,例如服务A调用服务B,这时候肯定要在A中配置B的url,这时候再写入message明显不合适了。

惯例先上思路

在模板解析时候就将常量写入,重写模板解析配置方法。看springboot源码

public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
      /**
     * {@inheritDoc}
     * <p>This implementation is empty.
     */
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
    }
}

目测应该是重写这货就可以了,talk is cheap,show me the code

动手重写

1.现在Application.properties中定义两个常量,用于文件上传和预览

upload.path=http://localhost:9091/accessory/upload
image.view.path=http://localhost:9091/accessory/open?id=

2.重写configureViewResolvers(ViewResolverRegistry registry)

   @Resource(name="thymeleafViewResolver")
    private ThymeleafViewResolver thymeleafViewResolver;

    @Value("${upload.path}")
    private String defaultUploadPath;

    @Value("${image.view.path}")
    private String defaultImageViewPath;

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        if (thymeleafViewResolver != null) {
            Map<String, Object> vars = new HashMap<>(8);
            vars.put("uploadPath", defaultUploadPath);
            vars.put("defaultImageViewPath", defaultImageViewPath);
            thymeleafViewResolver.setStaticVariables(vars);
        }
        super.configureViewResolvers(registry);
    }

3.模板上使用
html中

<img src="/images/default-mem.png" th:src="${defaultImageViewPath+user.photo}" alt="" >

js中
写法比较奇怪, /<![CDATA[/ 中间写定义的全局js常量 /]]>/

    <script th:inline="javascript">
        /*<![CDATA[*/
        var basePath='http://www.baidu.com';
        var uploadPath=[[${uploadPath}]];
        var defaultImageViewPath=[[${defaultImageViewPath}]];
        /*]]>*/
    </script>

就是酱紫。

目录
相关文章
|
JavaScript
uniapp+vue3路由跳转传参
uniapp+vue3路由跳转传参
672 0
|
芯片
STM32速成笔记(二)—GPIO
本文介绍了STM32的GPIO的配置和使用方法,并且给出了应用实例。此外,针对使用时可能遇到的一些问题给出了解决办法。
1094 0
STM32速成笔记(二)—GPIO
|
程序员
【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题
【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题
222 5
python多态 , 绑定方法与内置方法
python多态 , 绑定方法与内置方法
技术心得记录:单片机开发过程中使用结构体简化程序
技术心得记录:单片机开发过程中使用结构体简化程序
159 0
BOSHIDA DC电源模块有哪些注意事项和使用技巧?
BOSHIDA DC电源模块有哪些注意事项和使用技巧? DC电源模块的注意事项和使用技巧包括以下几点:
BOSHIDA DC电源模块有哪些注意事项和使用技巧?
|
存储 人工智能 API
minio 使用docker安装和入门案例demo
minio 使用docker安装和入门案例demo
282 0
|
关系型数据库 MySQL
MySQL GROUP_CONCAT 函数
MySQL GROUP_CONCAT 函数,字符串连接过长被截断
359 0
|
搜索推荐 数据库 Python
基于python+django的电影搜索网站-搜索引擎系统设计与实现
该项目是基于python的web类库django开发的一套web网站,给师弟做的课程设计。 本人的研究方向是一项关于搜索的研究项目。在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。通过开发该项目,笔者学习和巩固了python的相关技术和框架。
346 0
STM32:串口收发文本数据包(内含:发送文本数据实验图+代码)
STM32:串口收发文本数据包(内含:发送文本数据实验图+代码)
1013 0
STM32:串口收发文本数据包(内含:发送文本数据实验图+代码)