模板参数问题

模板引擎,如果有像freemarker那样的自定义标签中可以写键值对传参就好了

评论区

JFinal

2017-02-28 11:21

jfinal template engine 有自定义指令、template function、shared method、shared object 等扩展方式,不仅可以覆盖掉 freemarker 自定义功能,而且能实现更为强大的功能

键值对传参早就支持了,看一下手册,这样来用的:
#@functionName({k1 : 111, k2 : value})

不仅支持上述键值对传参,还支持数组传参:
#@functionName([1, "a", var, "b", 2])

出关客

2017-03-04 20:39

@JFinal 嗯,多谢。

出关客

2017-03-06 17:23

@JFinal 可惜我在文档中并没发现键值对这种传参方式

出关客

2017-03-06 17:23

@JFinal 对jfinal template engine的使用讲解还是有些缺乏

JFinal

2017-03-06 17:30

@出关客 文档中有一小节对 map 定义有过说明,这个就是 key value 传参方案

出关客

2017-03-06 21:11

@JFinal 麻烦问一下在java中扩展的自定义指令中怎么获取这个map

JFinal

2017-03-06 21:35

@出关客 如果是 map 以参数形式传的,那么在这个自定义指令中创建一个 setExprList(ExprList exprList) 方法,通过 exprList 这个参数就可以获取到这个 map

JFinal

2017-03-06 21:36

@出关客 具体可参考一下 #date 这个扩展而来的指令,重点看一下里面的 setExprList 方法

出关客

2017-03-06 21:48

@JFinal 嗯,明白了,这个地方接收到字符串,然后在这个方法里解析json

JFinal

2017-03-06 21:59

@出关客 其实你也可以在自定义指令中不必关心 setExprList 这个方法,而只关注 exec 这个方法,在这个方法中直接使用父类中的
protected ExprList exprList 这个属性值就可以访问到了,注意看一下 jfinal 官方扩展的几个指令是如何直接在 exec 方法中使用 exprList 这个对象的

多说一句,还有另一个父类的 protected Stat stat 对象,直接调用其 exec 方法就相当于访问到了具有 #end 结尾符指令的 body 部分

出关客

2017-03-07 11:21

@JFinal 受教,多谢波总

热门反馈

扫码入社