单独使用jifnal的ar和enjoy,如何使用isBlank方法

单独使用Jfinal的ar和enjoy,

  1.     DruidPlugin dp = new DruidPlugin(datasource.getUrl(),datasource.getUsername(), datasource.getPassword(),
  2.       datasource.getDriverClassName());
  3.          ActiveRecordPlugin arp = new ActiveRecordPlugin(datasource);
  4.          arp.setDialect(new PostgreSqlDialect());
  5.            Engine engine = Engine.use();
  6. engine.setDevMode(true);
  7. engine.setToClassPathSourceFactory();
  8. engine.addSharedMethod(new com.jfinal.kit.StrKit());
  9.        arp.setShowSql(true);
  10.        arp.setDevMode(true);
  11.          
  12.          dp.start();
  13.          arp.start();

通过Db.templateByString(sql,map).query();查询,要用enjoy处理最终的执行sql,要判断空串,一直写 #if(str==null&& str=='') 赶到麻烦和难看,想使用StrKit的isBlank方法,

执行如下enjoy代码

  1. #if(isBlank(startDate))
  2. and date=now()
  3. #end


抛出如下异常,Shared method not found: isBlank(java.lang.String);找不到方法

如何解决?

评论区

JFinal

2020-05-25 14:00

将下面的代码:
Engine engine = Engine.use();
改成:
Engine engine = arp.getEngine();

由于 enjoy 可以用在同一个项目中的不同功能,所以不同的 Engine 对象的配置是独立的,你通过 Engine.use() 获得的 Engine 对象并没有用于 ActiveRecordPlugin

仔细看一下文档中有关配置多个 Engine 的部分:
https://jfinal.com/doc/6-2

JFinal

2020-05-25 14:02

就 jfinal 本身来说,enjoy 已用在了渲染 html , 以及生成 sql。在 jfinal 中获取这两种用途的 Engine 对象的方法分别如下:
RenderManager.me().getEngine();
activeRecordPlugin.getEngine();

不同方式获取的 Engine 对象是不同的, 你的代码中通过 Engine.use() 获取的只不过是一个未被使用的默认 Engine

JFinal

2020-05-25 14:04

俱乐部有个同学的 jfinal 的项目中,用到了好几个 engine 对象来实现不同领域的功能:
1:渲染 html
2:生成源代码
3:利用 email 模板,生成群发 email
4:管理 sql
5:生成 xml 与微信公众平台交互

tctc4869

2020-05-25 14:31

谢谢

热门反馈

扫码入社