2017-08-12 11:34

扩展一下,先创建一个 MyParaDirective:
public class MyParaDirective extends ParaDirective

在 MyParaDirective 中覆写一下 exec(...) 方法,将原来的 ParaDirective.exec(...) 方法中的代码全 copy过来,改掉下面这一行代码:
sqlPara.addPara(exprList.eval(scope));

上面代码改成:
Object value = exprList.eval(scope);
if (value != null) {
sqlPara.addPara((value);
}

最后配置一下就可以了:
1:arp.getEngine().removeDirective("para") 先移除老的 para 指令
2:arp.getEngine().addDirective("para", new MyParaDirective()) 再添加自己扩展后的指令

sql 管理功能中的三个指令本身也全是扩展而来的,大家可以用类似的办法自由定制自己需要的指令

记得搞后来回来分享一下

2017-08-12 10:18

jfinal 3.2 手册第五章第 11 小节 《Sql 管理与动态生成》 这部分内容有过详细的讲解

jfinal 的 sql 管理用的是模板引擎,所以比 ibatis 这类用 xml 管理的灵活性、简单性要高得多

2017-08-12 10:16

@rocker18 下载首页的 jfinal demo,页面里面有一个 _layout.html 就是布局模板了,然后每个具体的模板都是被该 layout 文件调用而已

例如其中的 index.html、blog.html 的这些模板中根本没有 html head 这类头部的标记存在

layout 的核心功能是重用模板内容,避免代码冗余重复

2017-08-11 23:16

@RonnyZhang 可以自己做一个 getModels 方法来支持,大概方法是:
1:表单域用下标方式表示,例如:
name="user_0.userName"
name="user_0.age"

name="user_1.userName"
name="user_1.age"

2:后端通过已有的 getModel 方法来实现 getModels,大致如下:
List userList = new ArrayList();
for (int i=0; i<size; i++) {
User user = getModel(User.class, "user_" + i);
userList.add(user);
}

2017-08-11 22:55

后来听说 jetty 出了一个支持 java 6、java 7 的版本了,有情况请告知 jfinal 社区,谢谢

2017-08-11 22:54

jfinal 整合过的用于开发调试用的 jetty 版本是 8.1.8 版本。但你可以使用任何的 jetty 来用,只是整合的那几个类无法工作,可以拿过来那几个类的代码自己弄个支持高版本的就可以了

jfinal 整合的 jetty 一直没有升到最新版本的 jetty, 是因为高版本的 jetty 强制使用 java8,而 jfinal 有大量的 java 6、java 7 的用户要照顾到

这里有一个现成的升到 jeety 9 的参考,非常省事,博客标题为:升级JFinal内置的jetty到9版本,并且支持ssl:https://my.oschina.net/myaniu/blog/470050

2017-08-11 22:50

@Terry丶 在 qq 里面,用关键字 jfinal 搜索 qq 群就可以了, 也可以直接加入: 222478625

2017-08-11 17:16

@Terry丶 jfinal 社区挺多美女,qq 群里还有 @美丽不打折 @阳阳 @阿迷 等美女开车很稳

2017-08-11 16:46

@caoyaxin 一直没顾上呢,暂时的觖办法见这里:
http://www.jfinal.com/feedback/1654

2017-08-11 16:17

@caoyaxin 单步调试跟踪到 Config.getConnection() 中去,看是不是从 ThreadLocal 这个对象中获取的 connection,然后跟踪到 Config.close(connection) 中去,看 conection 是否被关闭了

定时任务确实容易出现你碰到的这个问题

2017-08-11 16:08

@锋 缺包而已,在首页下载 jfinal-3.1-all.zip 这个文件,里面有一个说明文件,指出了 cron4j 需要什么 jar 包

2017-08-11 16:03

IOC 的核心目标是为了在创建目标对象时应用代理,从而实现 AOP 功能

而 jfinal 已经有更简洁的 AOP 方法,也就没有必要用 IOC。 IOC 所要付出的代价不小,例如需要引入一个容器来实理对象的创建以及代理生成,还要用大量 XML 或者 Annotation 配置 bean 之间的依赖关系

从成本、便捷、以及核心目标综合权衡,jfinal 不提供 IOC,如果用户非常想要 IOC,几十行代码的事,这里是 jfinal 1.9 版本以前提供过的 spring 整合代码,可以参考一下,注意 ActionInvocation 要改名为 Invocation:https://gitee.com/jfinal/jfinal/tree/jfinal-1.9/src/com/jfinal/plugin/spring

2017-08-11 15:58

是否在调用 quartz 的线程中开启了事务,如果开启了事务,那么当前线程会绑定一个 Connection 对象,并且一直是开着的

2017-08-11 15:56

MetaBuilder.java 中有这个功能的代码,直接拿去用就可以了

2017-08-11 15:56

信息量不够, 啥叫条件多变? 如果是指 cache 用的 key 是多变的,写一个工具方法动态生成 key 就可以了