Beetl通过JAVA接口获取JAVA中的变量

模板语言绑定变量都是程序主动绑定到beetl,经过努力现在在beetl上实现了模板语言主动发出请求,来执行绑定。


最近做项目用到beetl,因为模板需要用到的变量很多,如果直接绑定,系统消耗很大。

产生了一个想法,当beetl解析不到变量的时候,通过JAVA接口直接获取对象返回给BEETL继续进行解析。

最终实现了Beetl主动发起绑定变量的功能。


修改的代码见最后。

调用时的代码如下:

StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader();
Configuration conf =  Configuration.defaultConfiguration();
conf.setEngine("org.koron.ebs.permission.beetl.MyEngine");//这里是改写过的引擎
GroupTemplate gt = new GroupTemplate(resourceLoader, conf);
Template t = gt.getTemplate("${sdf.name}<%for(u in user){print(u);}%>");
t.binding("user",new String[]{"IBM","GOOGLE"});
t.binding("VAR_NOT_DEFINED",new VarListener() {//绑定一个全局变量用来解析变量未定义变量
@Override
public Object parse(String var) {
if(java.util.regex.Pattern.compile("sdf\\.?").matcher(var).find())
{
POJO pj = new POJO();
pj.name="我试试";
pj.id="1111";
return pj;
}
return null;
}
});
t.renderTo(System.out);


package org.koron.ebs.permission.beetl;


import java.util.EventListener;


public interface VarListener extends EventListener{//用来解析变量用
/**
* 解析变量成一个实例,为NULL时,表示不解析
* @param var 变量名
* @return 实例
*/
public Object parse(String var);
}

第一次实现由模板语言主动调JAVA方法,感觉不错:)



修改的代码:

package org.koron.ebs.permission.beetl;



import java.io.Reader;
import java.util.Map;
import java.util.Stack;


import org.b
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值