Enjoy模版引擎提供了API直接获取变量值吗?

目前模版引擎提供了API直接传入模版字符进行渲染的方法,像下面这样:

com.jfinal.template.Template contentTemplate = Engine.use("default").getTemplateByString("用户名:#(usre.username)");

String content = contentTemplate.renderToString(data);

目前有提供API直接得到一个变量的值吗?

比如传入"#(user.addressList)"就把变量的原始类型的值返回出来,如果addressList为List<Map>对像,返回值Object就是List<Map>类型,而不是转换成字符串。

如果我想实现该功能应该怎样扩展一下Enjoy模版引擎?

评论区

JFinal

2019-11-07 16:52

renderToString 方法会将数据与模板结合并渲染成 String 字符串,所以得到的值一定是 String

如果希望实现你的功能,可以参考一下 com.jfinal.kit.ElKit.java 中的代码,可以这么来用:
1:不带参示例
Integer value = ElKit.eval("1 + 2 * 3");

2:带参示例
Kv data = Kv.by("a", 2).set("b", 3);
Integer value = ElKit.eval("1 + a * b", data);

具体的思路是将求值结果存放在一个叫 RETURN_VALUE_KEY 的变量之中,最后再通过 data.get(RETURN_VALUE_KEY) 获取该值

热门反馈

扫码入社