能象freemarker一样,增加模板方法吗

<#function add n1 n2>

    <#return n1+n2 />

</#function>

调用 <#assign sum=add(3,5) />

评论区

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 扩展来解决,代码最简洁,性能也最好,试用一次便知

热门反馈

扫码入社