开发者社区> 小尘哥> 正文

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>

就是酱紫。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
struts2中获取作用域的2种方式,RequestAware
struts2中获取作用域的2种方式,RequestAware
9 0
前端技术-Es6 语法-Let 定义变量和常量 | 学习笔记
简介:快速学习前端技术-Es6 语法-Let 定义变量和常量
35 0
springMVC创建基础变量
在springMVC中有一些变量是基础变量,可以在全局多个地方使用,在修改规则的时候,这样只用修改一个地方就好了,而且可以避免很多不必要的bug出现下面就来总结一下在我的项目中如何去创建一个全局基础变量 创建一个全局基础变量只需要三步: 1:在存放基础变量类的class中创建这个变量,我的在WechatConst.
564 0
thinkphp系统常量与自定义常量
thinkphp系统常量与自定义常量 时间 2014-03-03 13:41:14  CSDN博客 原文  http://blog.csdn.net/wuji_1/article/details/20367675 主题 ThinkPHP -------------------...
1005 0
使用Spring替换properties文件定义属性的方法
 工作中,领导认为properties文件太恶心(其实就不想让用),还好properties文件就是一个字符串的问题,下面我将Spring怎么实例化String、File、Map、List对象的常见方法列下面。供大家参考。废话不多说,还是上代码吧。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www
880 0
mvc基础系列说谈(10)——修饰标签(修饰属性,过滤器)(下)
(1)先引用百度知道中的几段话: GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。
679 0
mvc基础系列说谈(9)——修饰标签(修饰属性,过滤器)(中)
在上一篇中,介绍了 AcceptVerbs,ActionName,NonAction,OutputCache,ValidateInput,HandleError这几个修饰标签。它们的父类有所不同。例如: AcceptVerbs 标签(类)从ActionMethodSelectorAttribute类派生;NonAction从ActionMethodSelectorAttribute派生。
567 0
mvc基础系列说谈(8)——修饰标签(修饰属性,过滤器)(上)
MVC中的修饰标签有很多用途。它以修饰标签形式应用在控制器或控制器中的动作上。 最先想到的就是AcceptVerbs标签,在创建的时候,如果导航到创建视图,但不创建,则: public ActionResult Create(){    return View();}   这个动作...
754 0
+关注
小尘哥
bug创造者
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载