2018-01-16 17:31

1: 保持不变当然是可以的
2:既然想让 model 何持不变,生成器当然就不需要使用了
3:ActionInvocation 更名为了 Invocation,并且换到 com.jfinal.aop 包之下,很容易就改完了

此外,生成器如果希望只生成指定的表, 可以继承一下 MetaBuilder,然后覆盖其中的 isSkipTalbe(String talbe) 来实现,让这个方法返回 true, 就会过滤掉当前的 tabel,控制起来很方便,可以用正则匹配去控制该放行哪些 table,最后再 generator.setMetaBulider(new MyMetaBuilder()) 切换到自定义的实现就可以了

2018-01-16 17:27

表单的 enctype 是不是设置成了 multipar request ,这个要先调用一次 getFile

2018-01-16 16:23

这两个类里头有关 ar._getAttrs() 是有处理办法的,仔细看一下,是用的 CPI 模式

2018-01-16 16:23

@rirai 以 TimestampProcessedModelBuilder.java 以及 TimestampProcessedRecordBuilder.java 这两个类为蓝本去写,代码在此:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/builder/TimestampProcessedModelBuilder.java

将这两个类的代码 copy 出来, 然后自己再改改就可以了

2018-01-16 11:23

千万级数据并不算大,做好索引,让查询判断在索引上操作

2018-01-15 18:12

调整主要有两种方式:
1:通过继承 Captcha 来定制自己的 MyCaptcha,这样可以一次性全调整全
2:在创建 Captcha时,通过构造方法中的 int expireTime 来指定过期时间

看一下 com.jfinal.captcha 包下面的相关源码,代码很少,很好扩展

2018-01-15 18:08

jfinal 验证码默认过期时长 180 秒,可以通过操作 com.jfinal.captcha.Captcha 类进行调整

2018-01-14 21:24

同样的,RecordBuilder 也要这么扩展一下。 jfinal 自从 jfinal 3.3 开始,开放了 Dialect 的 setModelBuilder 与 setRecordBuilder 接口,可以自由定制如何从 JDBD 来读取数据

2018-01-14 21:23

先试试升级到 jfinal 3.3 看解决问题没有

如果没有解决,就在升级到 jfinal 3.3 的基础之上,通过 Sqlite3Dialect.setModelBuilder(...) 以及 setRecordBuilder(...) ,将 ModelBuilder、RecordBuilder 替换成自己的实现

自己的实现类似于下面的方式:
public class MyModelBuilder extends ModelBuilder {
...
}
在 if 分支里头添加一个分支,判断一下:
if (types[i] == Types.BOOLEAN) {
value = rs.getBoolean(i);
}

2018-01-14 11:51

@快乐的蹦豆子 已经在 gitee.com 的 issue 中补充了改进建议,后续版本完善一下,再次感谢

2018-01-13 22:21

此外,jfinal weixin 还有一个在 7200 秒之前提前 5 秒重新刷新 access token 的机制,所以通常情况下,在 access token 过期之前就被更新了,所以不会出现大并发时多线程同时更新 access token 的情况

2018-01-13 22:16

虽然这里有点问题,但影响并不大,即便是出现并发问题,也就是浪费点 access token api 的调用定额而已,而一个 access token 可以使用 7200 秒,绝大多数情况是够用的

2018-01-13 22:09

如果每次都是 new 出来 Apiresult,那么即便是有 synchronized 关键字也“不能”起到同步的作用

这段代码是很多年前写的,当时的代码应该是可以同步的,后来由于不断改动就有问题

正确的作法是在这个方法上再添加一个 static 关键字,那么,即便你是每次 new 出来 ApiResult 都会被同步,感谢你的反馈

2018-01-13 21:51

这个可以通过配置 durid 来实现:
http://www.jfinal.com/share/492

专业的人干专业的事,druid 干这个事情更好