Thymeleaf 自定义函数——Thymeleaf 模板执行Java代码并同后端Java解耦

相信大家关于Thymeleaf并不陌生,关于其使用请参考API文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html(英文版,保持耐心看完吧);今天主要记录一下Thymeleaf模板中调用Java代码中问题——模板与后端Java代码耦合度太高。

例:需求是根据配置外贸订单单据模板,通过模板引擎将订单通过模板解析出来,生成订单PDF单据或Excel单据并打印。

解决方案:前端通过类似Excel的方式画了单据外观样式,并将后端接口字段融合进去最终生成满足Thymeleaf语法的HTML文档,模板引擎根据接口数据解析配置的模板,生成数据填充好的HTML文档并转成PDF或Excel文档。

问题:单据中有很多需要逻辑处理的地方,如计算金额,金额转大写……

熟悉Thymeleaf的同学或阅读过上面api的同学知道,它自己本身是支持一部分函数的,但是我们自己想拥有自己的逻辑的函数时它无法提供,我们可以在其中调用Java代码,如:<td th:text="${new com.sl.test.util.NumberToENGLISH().numberToText(total1.getSum())}" class=" no-pre htRight htMiddle" colSpan="36" rowSpan="1"/>,这个Java方法是将数值total1.getSum()转为英文金额,但是这里的Java代码将Java类的包名全暴露给了模板,第一很不安全,第二当我们调整了包结构,这里的模板也必须跟着调整,这时间很麻烦的事。我们可以通过如下方式去实现解耦:

这里通过session方式或request方式也可以。

记录问题处理,共同讨论,共同进步

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值