2020-08-08 00:09
@糊搞 升级的这个项目规模并不小,2011 年启动的创业项目,迭代到 2013 年才停止
如果只是 N 年前写的 "小白的第一个JFinal程序" ,那没有必要拿来分享
2020-08-08 00:08
@SuperEric 跟着升级文档走会更全面, jfinal undertow 是完美支持 jfinal 所有版本的,本质上也支持所有其它基于 servlet 开发的 java 项目
2020-08-08 00:07
初始 jfinal @杜福忠 同学是菜鸟一枚,跟进到 3.0 就经成长为高手
关注 jfinal 动向,研究设计思想,理解源码,进步就是这么神速
时间投资到 jfinal 是值得的
2020-08-07 15:36
你创造了 jfinal 跨版本升级记录: 跨 23 个版本
这 23 个版本中, 多数版本改进升级的功能与特性都在 40 至 50 个,能跨越这么多个版本升级的原因是我在 jfinal 俱乐部视频中反复强调的:极简设计
jfinal 在 9 年前就坚持的极简设计,其 Handler、Interceptor、Controller、Render、Plugin 内核结构 9 年不变,轻松应对这 9 年来各种千奇百怪的需求
你本次跨 23 个版本升级 jfinal,其中第一、第三条本质是改类名:ClearInteceptor 改为 Clear
第二条也是改类名:ActionInvocation 改为 Invocation
第六条是改默认配置
绝大部分改动是改名类或方法名,这种改动 eclipse 会有错误提示,升级起来很安全,不会漏掉
真正切实有兼容性影响的是第 7 条中 dao.findById 改为findByIdLoadColumns(id,"字段名")
第 8 条不叫改动,是将原来的 jetty-server 换成使用 jfinal-undertow
点赞加收藏
2020-08-07 15:21
@牛哥哥大 这个问题在文档中有详细说明,例如:
paginate(1, 5, "select (... where x = ?)", "from article where id=?", 8, 10);
上面 paginate 的第一部分有一个嵌套,其中有问号占位,在生成分页查询时参数对不上,具体细节见文档:
https://jfinal.com/doc/5-6
这部分文档例出了分页可能碰到的问题,及其原因
2020-08-07 14:32
@牛哥哥大 大部分情况下,套了外层 select 后并不会变慢,因为套一层并不会增加数据的匹配量级
估计你碰到的是别的问题,你可以试一试在千万级的数量的情况下对比一下套一层 select 与否的性能
2020-08-06 17:36
Validator 中的 validateXxx 系的方法不支持 getRawData(),但是你可以像下面这样使用:
protected void validate(Controller c) {
String json = c.getRawData();
Map map = FastJson.getJson().parse(json, Map.class);
if (map.get("nickName") == null) {
addError("msg", "昵称不能为空");
}
....
}
也就是说,你可以在 validate 方法中通过 if 判断 + addError 来实现定制功能
2020-08-05 15:09
有不少同学提出需求,需要掌控 configPlugin 被回调的次序,你通过 me.setConfigPluginOrder(int) 方法就可以调整次序了
该方法在代码中的注释如下:
/**
* 配置 configPlugin(Plugins me) 在 JFinalConfig 中被调用的次序.
*
* 取值 1、2、3、4、5 分别表示在 configConstant(..)、configInterceptor(..)、
* configRoute(..)、configEngine(..)、configHandler(...)
* 之后被调用
*
* 默认值为 3,那么 configPlugin(..) 将在 configRoute(...) 调用之后被调用
* @param 取值只能是 1、2、3、4、5
*/
2020-08-05 15:07
@_imlzw_ 估计是你的项目在哪里动了 ClassLoader 才出现的这个问题
正常流程使用 jfinal 从来不会出这个问题