首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
能象freemarker一样,增加模板方法吗
opal
2019-05-10 16:41
<#function add n1 n2>
<#return n1+n2 />
</#function>
调用 <#assign sum=add(3,5) />
项目:
JFinal
评论区
JFinal
2019-05-10 16:49
enjoy 拥有多种扩展方式,早就覆盖掉 freemarker 的模板方法功能了
试用一下 #define 定义模板函数,以及 shared object、shared method 扩展,第一种扩展只需要 5 分钟学会,第二、第三种只需要一分钟学会
回复
opal
2019-05-10 16:53
这些我知道啊,但#define不能返回一个值,shared object,shared method是需要修改java代码来实现的,如果能在模板中实现,就不需要写java代码了,系统更新、发布用一个命令 svn up就完成了。
回复
JFinal
2019-05-10 16:55
@opal
#define 可以通过 #set(key, value) 将值返回
回复
opal
2019-05-10 17:06
<#function is_XXX_1 v>
<#return true />
<#function is_XXX_2 v>
<#return true />
<#function is_XXX_3 v>
<#return true />
<#if is_XXX_1(val) && is_XXX_2(val) && is_XXX_3(val)>
.....
象这样的代码,如果换成 #define 和 #set,不优雅啊(多出几个变量,页面多出空行输出,需额外调用)
#define is_XXX_1(1)
#set(v_XXX_1, true)
#end
#define is_XXX_2(1)
#set(v_XXX_2, true)
#end
#define is_XXX_3(1)
#set(v_XXX_3, true)
#end
#@is_XXX_1(val)
#@is_XXX_2(val)
#@is_XXX_3(val)
#if( v_XXX_1 && v_XXX_2 && v_XXX_3)
...
#end
回复
JFinal
2019-05-10 17:16
freemarker 的这种用法是在用 freemarker 的语法来写 java 代码该写的逻辑,建议使用 jfinal enjoy 模板的 shared method 或者 shared object 扩展来解决,代码最简洁,性能也最好,试用一次便知
回复
发送
我要反馈
热门反馈
扫码入社
试用一下 #define 定义模板函数,以及 shared object、shared method 扩展,第一种扩展只需要 5 分钟学会,第二、第三种只需要一分钟学会