我在做一个通用排序函数的定义,函数如下
#prop 为列字段 #sort 为asc desc #defaultOrder 为是否有默认查询 #define commonOrder(prop,sort,defaultOrder) #if(prop) order by #(prop) #(sort) #else #(defaultOrder) #end #end
我可以在其他模板去调用这个函数
#@commonOrder(prop,sort,null) //这个没有默认排序 #@commonOrder(prop,sort,"order by field desc")//这个有默认排序
我的需求是在没有默认排序的时候能否不写第三个参数,也就是在定义函数时某些参数是否可以缺省
#@commonOrder(prop,sort,null) => #@commonOrder(prop,sort)
我尝试了下,是不行的
Wrong number of argument to call the template function, right number is: 3
我又尝试了一下看是否支持java的重载,定义了两个commonOrder
#define commonOrder(prop,sort) #if(prop) order by #(prop) #(sort) #end #end #define commonOrder(prop,sort,defaultOrder) #if(prop) order by #(prop) #(sort) #else #(defaultOrder) #end #end
enjoy目前不支持重载的方式,他会报重复定义的问题
Template function "commonOrder" already defined in /org/sql/_common.sql, line 3
1:对第二个commonOrder增加一个s,commonOrders
2:使用 指令扩展 做一个#commonOrder 里面 extends Directive
exprArray.length 里面可以随意控制 https://jfinal.com/doc/6-4 》13、指令扩展