thymeleaf方言和处理器简介

thymeleaf是一个很容易扩展的库,大部分面向用户的功能不是直接构建在他的核心中,而是通过打包和组件化到一个称谓Dialect(方言)的功能集合中。
由于Spring-boot间接式的主推了thymeleaf模板,所以本文主要介绍下thymeleaf的一些扩展功能,尽管thymeleaf3的性能相比2来说提升了很大,但是相比别的,还是有一点差距。

方言(Dialects)

如果我们研究过thymeleaf的一些基础使用的话,应该能意识到我们之前了解的准确的说不是thymeleaf,而是thymeleaf的标准方言,例如th:text,仅仅只是可以立即使用的标准方言。
同时我们可以自定义一组attribute或者tag在thymeleaf中用来处理我们的模板。

Dialects是实现了org.thymeleaf.dialect.IDialect接口的对象,具体如下:

public interface IDialect {
   

    public String getName();

}

同时最基础的接口有:
* IProcessorDialect 处理器方言
* IPreProcessorDialect 预处理方言
* IPostProcessorDialect 后处理方言
* IExpressionObjectDialect 表达式对象方言
* IExecutionAttributeDialect 可执行属性方言

IProcessorDialect 处理器方言

参看接口代码

public interface IProcessorDialect extends IDialect {
   
    public String getPrefix();
    public int getDialectProcessorPrecedence();
    public Set<IProcessor> getProcessors(final String dialectPrefix);
}

processor是负责执行thymeleaf模板中的大部分逻辑的对象。也是最重要的扩展方言。
定义了三个主要是属性方法。
* prefix 应用于匹配元素和属性的前缀,类似于th:if,thLtext中的th。如果希望处理器在未定义的标签或者属性上执行,则可以将prefix定义为null
* getDialectProcessorPrecedence 定义方言的优先级。
* getProcessors 定义一组由该方言提供的处理器集合。

IPreProcessorDialect 预处理方言

public interface IPreProcessorDialect extends IDialect {
   
    public int getDialectPreProcessorPrecedence();
    public Set<IPreProcessor> getPreProcessors();
}

预处理和后处理与处理器不同。处理器是在单个时间或者模板片段上执行。而预处理和后处理是作为引擎处理过程中的附加步骤,应用在整个模板的执行过程中。
因此他们遵循与处理器完成不同的API,他们更加面向事件。
预处理在特定的情况下,是在为特定模板执行处理器之前应用的。后处理器则相反,是在执行处理器之后应用。

IPostProcessorDialec 后处理方言

public interface IPostProcessorDialect extends IDialect {
   
    public int getDialectPostProcessorPrecedence();
    public Set<IPostProcessor> getPostProcessors();
}

IExpressionObject

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值