2020-08-14 21:27

@RichardHe maven 还是安全的,因为国内大厂早就有所准备,不依赖外部,例如阿里就有自己的 maven 中心库,我一直在用

2020-08-14 21:24

@冰雨 jfinal 有一套把控代码质量的方法,大致有:
1:极简设计是根本。好的设计可以将代码修改、新增功能都控制在尽可能小的范围内,每次只需要控制一个小范围的代码质量即可。 想想反面情况: 不好的设计牵一发而动全身,这种代码,哪都不敢动它一下,改了某个地方,另一个地方或多个地方冒出来 bug

2:对代码变动、新增的地方,使用 debug 的方式来测试。 每一次测试通过在 eclipse 中手动修改变量的值,让代码覆盖每一个分支,确保对代码进行全覆盖式 debug 测试。 很多人不知道 debug 功能可以动态修改行动中的变量值

3:复杂代码写两次。 有些功能很复杂,涉及各种场景、情况,第一次写的时候很可能不是最优代码,等过了一段时间以后,脑子里很可能冒出来更好的写法,最近的一个典型例子是:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/template/stat/Compressor.java

上面的 Compressor 压缩功能,第二次写出来的代码即简洁又高效,功能还比第一次的要强大

4:提交代码时,利用 git 或者 svn 的代码同步功能,细心对比,最后再看一遍是否有问题

5:jfinal 新版本先在公司内部项目以及 jfinal.com 官网试用,试用一段时间,看一下日志文件,是否出现了异常,确保没有问题以后再发布到 maven 中心库供同学们使用

你可以访问一下 https://jfinal.com/a/a/a/a,会发现最新版本的 jfinal 总是我自己在使用,我用着没有问题以后再让大家用上最新版。

开源作者本人第一个使用,这才是有道德、负责任的做法。

而不是用开源出来让其他人帮忙测试,测试没问题以后再开源作者自己使用。

2020-08-14 21:04

@李通 这个功能确实可以有,有点担心骚扰到用户

2020-08-14 21:03

先使用你自己的分页 sql 用一下:
Db.find(sql, paras);

确保性能是好的,再用于分页:
Db.paginate(...);

因为性能取决于你的 sql 而不是分页

2020-08-14 21:01

@RichardHe jfinal_demo_for_maven 相当于是 jfinal boot 了

2020-08-14 21:00

@绝对零度 有 PostgreSqlDialect() 可以使用,会针对 postgresql 生成 sql

2020-08-14 20:59

推荐使用 useFirstFound 而非 append 与 appendIfExists ,因为前者更要求配置文件的全面性,与实际应用场景比较切合

jfinal 4.9.01 版本新增了对于 get 方法的 trim() 操作,这样就可以避免 value 值的后面会不小心多一个空白字符,减少麻烦

此外,配置的时候,等号前后两侧可以留一个空格,即便是老版本 value 值也并不会多出一个空格,新版本添加 trim() 以后就更不会多出空格了

2020-08-14 20:54

@彭大勃 你这名字不错,又是大,又勃,又是膨大

2020-08-14 20:52

@RichardHe 第一次下载较慢,因为有一些依赖的环境需要下载到本地,下载完以后,将来都是使用本地缓存,会很快

2020-08-14 20:51

一句话就是: modifyFlag 就是对所有 set 进去的字段做标记,后续你再 update() 的时候,只更新做过标记的字段

这个功能,不会理会你其它的各种理由,因为功能就是这么设计的

2020-08-14 20:50

我在这篇文章下面已经回复过了:
https://jfinal.com/feedback/4112

本质原因是,jfinal 所有的 Render 都会 getOutputStream() 或者 getWriter() 一次,并向里头写入数据

而如果你自己有代码也 getOutputStream() 或者 getWriter() 过, 会就触发这个异常

单步调试找到解决发的地点,删除相关代码即可

2020-08-13 14:47

估计你是有 context path , 注意在 tomcat 中将其配置成 ""

这里有相关资源:
https://my.oschina.net/jfinal/blog/353062

建议使用 jfinal undertow, 让开发、打包、部署一体化,节省大量时间:
https://jfinal.com/doc/1-2

2020-08-13 14:24

如果是 web 项目,注意应该加一句 :
me.add(druidPlugin)

如果不是 web 项目,注意加两句:
druidPlugin.start();
activeRecordPlugin.start();

文档中有:
https://jfinal.com/doc/5-15

2020-08-13 00:18

TableBuilder 在较高的版本改进过,确实是可以这么玩的,赞

2020-08-12 18:06

@badouyuren 我觉得与你的使用方式可能有关,例如是不是在启动前就调用了 dao

UndertowServer 启动前与启动后,是两个世界,因为 ClassLoader 不同