RT:
某些业务想动态取 Java 类的对象方法,有多种方式,我这里分享一种SharedMethod扩展aop方法。
上 石马:
public class TemplteFn { /** * 转调Aop.get加载字符串名称的类或接口关联的Class对象 * @param name 指定字符串名称的类或接口关联的Class对象 * @return Aop.get返回的对象 */ public Object aop(String name){ try { return Aop.get(Class.forName(name)); } catch (ClassNotFoundException e) { throw new RuntimeException("找不到这个类:" + name); } } }
public void configEngine(Engine me) { me.addSharedMethod(new TemplateFn()); ...
使用:
#(aop("带包名的类名称").xxx())
测试:
public class TplKit { public String getName(){ return "myName"; } public static void main(String[] args) { String s = "#(aop('com.yunfinal.TplKit').name) " + "-- #(aop('com.yunfinal.TplKit').getName())"; Engine use = Engine.use(); use.addSharedMethod(new TemplateFn()); Template template = use.getTemplateByString(s); String str = template.renderToString(Kv.create()); System.out.println(str); } }
结果:
如果想方法也是动态的,可以参考另一篇分享:https://jfinal.com/share/2552
非常好用~
有参考价值就点个赞呗~