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>

就是酱紫。

目录
相关文章
Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
310 0
|
4月前
项目的定义
项目是一种临时性工作,旨在创造出独特的产品、服务或成果,从而驱动变革并为企业带来商业价值。通过项目的实施,我们可以针对性地满足市场需求,实现商业目标。
|
7月前
|
Java API 数据库
后台组件-常量定义
平台里有很多可配置的参数
|
7月前
|
Java
FreeMarker - 四种变量的用法
FreeMarker - 四种变量的用法
354 1
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
73 0
|
JavaScript
vue项目定义全局常量并进行使用
vue项目定义全局常量并进行使用
269 0
|
前端开发 搜索推荐 开发者
使用 localIdentName 来自定义模块化的类名|学习笔记
快速学习使用 localIdentName 来自定义模块化的类名
|
Java Linux 开发工具
JavaSE (二)原生数据类型(变量与变量的定义、注释)等说明
JavaSE 原生数据类型(变量与变量的定义、注释)等说明
102 0
SpringBoot——Thymeleaf中的表达式基本对象、表达式功能对象
SpringBoot——Thymeleaf中的表达式基本对象、表达式功能对象
SpringBoot——Thymeleaf中的表达式基本对象、表达式功能对象
|
Java 数据库
FreeMarker 模板来定义字符串模板
FreeMarker 模板来定义字符串模板
355 0
FreeMarker 模板来定义字符串模板