如何自定义freemarker的表达式?

发布于 2021-11-16 14:37:47 字数 488 浏览 822 评论 11

如果自定义freemarker的表达式,注意不是函数,像下面这样:

<#if name?myExpr>                                                                
myExpr是自己定义的一个方法,例如对字符串进行某种判断返回true or false

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

兮颜 2021-11-18 00:59:10

何必那么麻烦了!

比如你的方法

myObj.myExpr(name)是判断是否为空的

直接在ftl中引用该方法

而现在你又要封装一层

function a(){

    myObj.myExpr(name)

}

然后又在ftl中使用a()

这样不就是白白花时间吗?

剑心龙吟 2021-11-18 00:58:51

看lZ的意思就是在宏中引用java的方法:

比如:myExpr(String name)方法

<#if name?myExpr>   

中 name 和 myExpr都是java对象

那么在设置model时候就应该把这个方法myExpr的对象设置进去

myObj.myExpr(name)

秉烛思 2021-11-18 00:57:47

<#if name?myObj.myExpr(name)>   

没测试过,不知道行不行

无边思念无边月 2021-11-18 00:57:25

看lZ的意思就是在宏中引用java的方法:

比如:myExpr(String name)方法

<#if name?myExpr>   

中 name 和 myExpr都是java对象

那么在设置model时候就应该把这个方法myExpr的对象设置进去

myObj.myExpr(name)

哑剧 2021-11-18 00:55:39

是不是这个逻辑放到业务层里更好?

甜扑 2021-11-18 00:52:44

做freemarker不少了,没听说有这个功能,所有的自定义都是通过@来调用,官方文档也没提到?调用自定义函数

只为守护你 2021-11-18 00:40:26

做freemarker不少了,没听说有这个功能,所有的自定义都是通过@来调用,官方文档也没提到?调用自定义函数

情绪失控 2021-11-17 23:57:51

那没办法了:)

躲猫猫 2021-11-17 08:54:42

这个只能通过修改freemarker的源码,重新编译来实现了。FreeMarker的外部扩展只有宏(macro)、方法(function)、模板加载、及缓存。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文