Thymeleaf3自定义表达式

1. 简介

在上一篇《Thymeleaf3自定义方言Dialect与处理器》中,记录了使用Thymeleaf3自定义方言和处理器的方法,同时也说到了方言Dialect是处理器与表达式的集合。既然处理器支持自定义,那么推测表达式应该也支持自定义的。但在Thymeleaf的官方tutorials以及article中均未能找到相关的指导与说明,若有人知道官方相关说明的位置,希望能留言或者别的方式告知一下。
既然官方tutorials没有,那就baidu了一下,还是找到了网上各位大神的记录文章。主要参考了《thymeleaf自定义工具对象》 这篇文章。
然后辅以我自己的实践、理解,以及对官方源代码的模仿,得到了一些新的理解,整理成了这篇文章。

2. 常用表达式Expression

在Thymeleaf自带的 StandardDialect 和 Spring提供的 SpringStandardDialect 中,有很多常用的表达式Expression,例如 #strings #calenders 等。
使用样例如下,这些在官方的文档中都有详细的介绍,此处就不再赘述。

/*
 * Null-safe toString()
 */
${#strings.toString(obj)}                           // also array*, list* and set*

/*
 * Check whether a String is empty (or null). Performs a trim() operation before check
 * Also works with arrays, lists or sets
 */
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}

3. 实现 IExpressionObjectFactory 接口

IExpressionObjectFactory的名称上来看就是表达式对象的工厂类,即为创造提供表达式对象的接口。
创建实现类,大致如下:

public class BaseDialectExpressionFactory implements IExpressionObjectFactory {
   

    public static final String DICTIONARY_UTILS_EXPRESSION_NAME = "dic";
    public static final Set<String> ALL_EXPRESSION_OBJECT_NAMES;
    static {
   
        final Set<String> allExpressionObjectNames = new LinkedHashSet<String>();
        allExpressionObjectNames.add(DICTIONARY_UTILS_EXPRESSION_NAME);
        ALL_EXPRESSION_OBJECT_NAMES = Collections.unmodifiableSet(allExpressionObjectNames);
    }
    @Override
    public Set
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值