2019-06-19 17:20

强烈建议升级,代码更少、性能更高、功能更强大,升级起来也很容易

2019-06-19 17:20

一定要参考这位同学的分享:
http://www.jfinal.com/share/1682

我在分享下方也回复了更好的升级办法

2019-06-19 17:12

Oracle 数据库要事先配置方言:
arp.setDialect(new OracleDialect());

生成器同样也要配置方言:
generator.setDialect(new OracleDialect());

2019-06-19 17:11

部署到 tomcat 出现类找不到的问题相对重要,正准备要发布新版本

这个问题是由于 tomcat 丢失了 CLASSPATH,而 jfinal 官方已抛弃 tomcat 很长时间,所以 4.2 版本没有发现这个问题。 丢失 CLASSPATH 这个问题很难事先预料到,别的 java web 容器没有这个问题

2019-06-19 17:06

jfinal 迭代八年,一直非常重视兼容性,在尽可能保障兼容的前提下,十分重要的必须改变大多有两种:
1:类改名、方法改名
2:删除一些类、方法,但同时提供更简洁的替代方案

一般来说,如果你的应用没有深度扩展过 jfinal , 从老版本升到新版本多数工作分三步:
1:依赖改为最新版本
2:根据 eclipse、IDEA 的错误提示,改改类名、方法名
3:剩下的问题查看社区的升级文档:https://www.jfinal.com/doc/14-1

建议在升级的时候首先关注一下社区的升级文档,做到心中有数

感谢你的分享

2019-06-19 11:15

生成器也要设置好方言:
generator.setDialect(new OracleDialect());

2019-06-18 17:32

这种基础功能必然是支持的:
https://www.jfinal.com/doc/6-4

2019-06-18 11:23

文档中详细说明过这个问题的原由:
https://www.jfinal.com/doc/5-6

2019-06-17 17:19

信息量严重不足,这个比猜谜要难多了

2019-06-17 14:59

这个是 IDEA 的潜在错误识别机制,它发现你有一个 private 属性,但没有地方进行赋值,所以怀疑有错误

建议去除 private 修饰就好

2019-06-17 11:52

刚注意到你的问题,并不是在说字段的问题,而是在说 Model 名称的问题,解决方法也是类似的:继承 MetaBuilder 覆盖掉其中的 buildModelName(...) 方法,随心所欲制定自己的 model name 规则

2019-06-17 11:41

jfinal-club 中的表字段本身就是驼峰的,所以这个问题是自动被化解的

除了 jfinal club 中的用法以外,使用 mysql 时,想生成驼峰的 getter、setter 按照下面的办法:
1:字段名使用小写
2:字段名的单词之间用下划线分隔

如果字段名使用了大写,可以通过继承 MetaBuilder 并覆盖掉其中的 buildAttrName(String colName) 方法,在里头做一个 colName = colName.toLowerCase() 转换

目前这个 toLowerCase() 的转换只针对 oracle 做过,因为 oracle 的字段名本身是大写的

2019-06-17 11:37

@天晴

总之:
1: 需求不太强烈
2: 要满足这个需求,可以通过你的办法多一行代码解决,很方便,也很好理解,没有学习成本
3:如果要加上这个功能,如果用户要在下层的子 Routes 中去除上层的拦截器相当麻烦

设计就是无处不在的权衡取舍,没有完美,只有追求最佳平衡

2019-06-17 11:34

@天晴 多数情况下,不建议使用多层拦截器,而是 AdminRoutes、FrontRoutes、WeixinRoutes ...... 这样扁平化来使用

少数确实要使用多层 routes 的,可以用你的办法:
add(new ModuleRoutes().addInterceptor(new SetMainMenusInterceptor()));

加你建议的这个功能也不难,但这个需求貌似不强烈,很少有人提起

加了的话,最大的问题在于,如果有人不希望在下层 routes 中使用上层的拦截器, 还要想办法去掉,而去掉的话就十分麻烦了

2019-06-17 11:31

@HeLei 只要是报错了,整个过程就是失败的,所以这里的关键就转向于去解决异常,而不是改里的代码了