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

单独使用Jfinal的ar和enjoy,

  	 DruidPlugin dp = new DruidPlugin(datasource.getUrl(),datasource.getUsername(), datasource.getPassword(),
	    			 datasource.getDriverClassName());
	    	    ActiveRecordPlugin arp = new ActiveRecordPlugin(datasource);
	    	    arp.setDialect(new PostgreSqlDialect());
	    	      Engine engine = Engine.use();
				engine.setDevMode(true);
				engine.setToClassPathSourceFactory();
				engine.addSharedMethod(new com.jfinal.kit.StrKit());
	    	  arp.setShowSql(true);
	    	  arp.setDevMode(true);
	    	    
	    	    dp.start();
	    	    arp.start();

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

执行如下enjoy代码

	#if(isBlank(startDate))
		and date=now()
	#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

谢谢

热门反馈

扫码入社