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 就可以了

2017-08-10 22:29

@叮咚 先把手册仔细看完,再着手开发,会省很多时间

2017-08-10 22:29

@叮咚 得先看你的模板引擎用的是什么,如果是 jfinal template engine , 用一下 #(ret) #(ret.msg) 这种就可以得到

如果用 freemarker ,用 ${ret} 得到

2017-08-10 17:08

@kyytyp 用 utf8mb4 省事,过滤以后再也回不来了

2017-08-10 16:58

在 handleError 方法中,通过 c.getAttrNames() 得到前面 validate 中 validateXxx 方法设置好的 attribute 的集合

然后再对这个集合迭代得到年有验证得到的提示信息值,并放在一个 Map 或者 Ret 对象中,然后通过 c.setAttr("ret", ret) 传给页面

最后 c.render("Error.html") 在 Error.html 中输出前面 setAttr 过来的值即可

2017-08-10 16:39

默认调用的这个事情,在手册上有过说明

2017-08-10 16:39

@Willson_L 当你没有调用 invoke(),也就是没有调用 controller,进而 controller 中的 render 方法也没被调用

当一个请求过来,至始至终都没有调用过 render 方法的话, jfinal 会默认帮你调用一下 render(view),而 view 的规则如下:
view = baseViewPath + viewPath + methodName + ".html"

其中 baseViewPath 是你在 configRoute(Routes me) 中通过 me.setBaseViewPath(...) 设置的,而 viewPath 是 me.add(controllerKey, controllerClass, viewPath) 时调协的

methodName 是你 action 的方法名

2017-08-10 15:08

看一下控制台输出的 jfinal action report,看 url 是什么,被访问的 action 是什么,如果 action 是对的,那么很可能是你的拦截器中的逻辑造成没有调用 inv.invoke() 这行代码

需要调用拦截器中的 inv.invoke() , 才能将调用从拦截器传递下去

2017-08-10 11:03

jfinal 的任何版本都是支持 mysql 5.7 的,所有功能的增强与改进都不涉及 mysql 版本

可能是别的原因,最好建议升级到 3.2 版本,因为你是 3.1 升到 3.2 很平滑

2017-08-10 11:01

老版本的 demo 仅仅是示例,并没有引入业务层。为了避免误导新人,后来的 demo 加入了 service 层,建议不论项目规模大小一定、一定、一定要引入 service 层

上面代码的 delete , 其实可以直接 blogi.delete(),因为 model 删除自身只要一个 id 即可,你甚至可以这样来删:
Blog blog = new Blog().setId(123);
blog.delete();

2017-08-10 10:51

@邓盛余 Db.batch 不支持返回自增主键

这部的文档确实不完善,现在可以看一下 batch 方法上的注释文档,有些给了例子代码

2017-08-10 10:49

getDeclaredMethod("init"); 改为 getMethod("init");