JFinal使用技巧-Enjoy模板引擎SharedMethod扩展Aop方法

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);
      }
   }
}

配置:https://jfinal.com/doc/6-7

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);
    }
}

结果:

image.png

如果想方法也是动态的,可以参考另一篇分享:https://jfinal.com/share/2552

非常好用~

有参考价值就点个赞呗~ 

评论区

爱做饭的开饭

2022-12-30 11:06

老杜出手,果然不凡,奥力给