2020-10-10 09:33

@北流家园网 你的每个 tab 可以用一个 kit.fill 来填充数据

如果你希望每个 tab 中的数据只是在浏览器中被 display: none 下次点击时不请求后端而是立即出来的话,可以参考 kill.fill 写一个 tab 方法,将 $(container).html(ret); 改成 $(container).after(ret);

jquery 的 after 方法会追加 html 片段,而 html(...) 会覆盖原有的 html 片段

注意追加完以后,将其它的 tab 通过 display:none 隐藏

2020-10-09 23:04

iframe 相对来说是慢,但也可能是你 iframe 中的内容过多导致的

jfinal 马上要上线的 app & coffee 频道,其中的 jfinal-kit.js 项目中提供了一个 fill 交互模式,可以完全代替 iframe

明天上午注意过来看一下,正在录入最后一部分数据,马上要开放这个频道了

2020-10-09 15:28

做一个 public class MyArp extends ActiveRecordPlugin, 用这个 MyArp 代替官方的插件

然后在 MyArp 内部覆盖父类的 start() 方法,用 try catch 处理一下,大致如下:

public boolean start() {
try {
super.start();
} catch(Exception e) {
在这里只做日志, 不再抛出异常
}
return true;
}

通过以上改造以后,即便启动出现异常,不影响其它部分的使用

2020-10-09 15:25

@JF_John 使用 %s 要注意切换到 slf4j 时要改成 {}, 所以最好是早点决定一直用哪个日志框架,不用改了

2020-10-09 15:24

单元测试先弄几个 Mock 类辅助,参考这里:
https://gitee.com/jfinal/JFinal-ext2/tree/master/src/test/java/com/jfinal/ext/test

2020-10-09 11:38

添加一下 cron4j 依赖

2020-10-08 22:38

没用过这个数据库,如果这个库支持 ANSI Sql 标准,可以用一下 AnsiSqlDialect,配置一下:
arp.setDialect(new AnsiSqlDialect());

如果这个数据库是一个很不一样的存在,可能你需要扩展一下 Dialect

2020-10-08 18:04

@tctc4869 还是不知道你的具体需求是什么,希望你能写个分享,将所希望的用法直接写成类似于伪代码的形式

2020-10-08 16:49

@tctc4869 我不知道你希望的用法是怎样的,希望你能将你希望的用法,甚至你现在自己的扩展分享出来

如果很好用,可以引入后续的 jfinal 版本中,或许放开 controllerKey 的唯一性限制是件很简单的事情,例如在添加路由的时候去除 containsKey 判断可能就可以了

controllerKey 改名为 controllerPath

2020-10-08 15:19

@tctc4869 jfinal 后续要推的另一个框架会设计成多 Controller 共享同一个 path 的风格,但这个必须是要在 jfinal 生态建设之后的事,当前最重要提是建立 jfinal 生态

2020-10-08 15:14

Record 通常用于与数据库交互,别的场景也可以用,不限定

但别的场景,建议用更方便的 Kv

2020-10-04 12:10

@bluewindlan 直接 model.save 不是批量场景,就好比账户注册,文章发布这样一次保存一个 model 的场景

2020-10-04 11:04

@bluewindlan 封装的 model 不是慢,而是机制问题

你在 for 循环中 save,每次循环都会连接数据库,解析 sql,传送 sql 拿到结果,这里头除了数据库操作还有 IO 通信的工作

而你用 batch 来 save,整个过程是一次性的,一次性将所有数据发到数据库,这个是有本质区别的

我打个比方,假如一个快递公司要将 4000 个包裹从北京送到上海,如果用 for 循环,那就是每趟送一个包裹,一共需要 4000 趟。 如果每次送 4000 个,则只需一趟