2017-11-28 18:38

维护项目是个大多数人不乐意的活,尤其是项目质量并不高的情况下更是如此,任何人都应该会有一点小情绪,我个人也是极其不愿意维护别人写的项目的

时间关系,在对上述问题只做简短的回答:
一、网上资料难找
jfinal 虽然包含了 ORM + MVC,但代码量其实只有两万多行,所以在根本上文档就多不起来。 相比 spring,代码量起码好几十万行,而且类层次非常深而且复杂,所以文档必定就会多

再一个,官网提供的手册,已经涵盖了几乎所有的基本功能,满足日常开发是没有问题的,万一碰到问题,还有 jfinal 社区可以提问,还有 10 来个官方 qq 群,还有 jfinal 在 OSC 社区积累了 6 年的问答:https://www.oschina.net/search?q=jfinal&scope=bbs&catalog=1&sort_by_time=1

jfinal 历史版本的手册与新版本区别很小,而且也是可以通过改一下 url 下载链接获取到的

二、关于俱乐部
俱乐部提供了一些增值的服务,一是要为继社区的资金消耗,确保社区、项目的“可持续发展”, jfinal 在出品俱乐部之前其实已经无偿、耐心为用户提供支持“长达 5 年”多的时间,没有资金的支持,任何项目都不可能长久

三、关于帮助或手册
在手册之外,有大量的基于 jfinal 的开源项目是直接可以使用的,看这里:
https://gitee.com/search?search=jfinal&type=project&language=&condition=last_update_time

四、关于贡献者
关于贡献者,jfinal 项目不能光看 git。首先 jfinal 主要是入驻 gitee.com/jfinal,并没有在 github 上怎么活跃过

其次,早在 6 年前,我个人习惯了在 OSC 的问答区与用户沟通交流:
https://www.oschina.net/search?scope=bbs&q=jfinal
所以,很多在 git 上做的事情,在社区其实已经做完了。关于贡献者人数的多少,可以肯定的告诉你,在国产项目里面几乎不可能有哪个项目的贡献者会比 jfinal 多,因为 jfinal 的贡献者的主要贡献方式并不是使用 git,而是直接与我交流、沟通,代码由我亲自操刀

我自己亲自操刀,解决用户的反馈,有一个最大的好处是,与用户一对一沟通,可以交流出深层次的需求,得到问题的本质

关于 fork、star 量,jfinal 主要在 http://gitee.com/jfinal 推,并没有在 github 上,目前在这个平台上排名第三:
https://gitee.com/explore/starred?lang=Java

关于 git 的提交数量,jfinal 只在发新版本的时候一次性提交一次,在新版本开发过程中并不会提交到 git,我个人习惯于使用 SVN 管理源代码

所以,如果你有兴趣的话,加我 QQ ,我可以给你看一下我在本地的 jfinal 版本提交次数,一定会吓到你,远比你提到的 druid 提交次数要多得多

先说这么多,还有疑问的话可以在此回复

2017-11-28 17:26

纯前端问题,打开浏览器的开发者工具,查看 js 与数据

2017-11-28 17:24

@qwerty111 jsp 渲染得: renderJsp("index.jsp");

2017-11-28 17:24

mina 的源代码我看过,写得不怎么样,架构设计不优雅,学习成本高

2017-11-28 17:23

message 这些属于包里面的内容字段,包的开始与节束应该在更底层去解决,而不是通过判断内容字段的内容结构去决定开始与节束,再多研究一下 mina 文档

不建议用 mina,而是建议用 netty 或者国产的 t-io

2017-11-28 16:17

sql 不要写在model中,而是要写在 service 层或者外部 sql 模板文件之中。 model 只承载数据,保持 model 中的清爽

看一下 jfinal 手册有关 sql 管理部分的最佳实践,也可以加入俱乐部获取本站源代码得到最佳实践代码

2017-11-28 16:16

手误,应该是 ClassPathSourceFactory

2017-11-28 15:47

异常提示已经很明确了:
Can not create instance of class: demo.DemoConfig. Please check the config in web.xml

一是 demo.DemoConfig.java 这个文件可能不存在,注意看路径与文件名都要对,二是 DemoConfig 可能没有继承 JFinalConfig,三是 eclipse 的 Default Output Folder 没有配置正确

2017-11-28 15:43

多年不用 spring,没法帮到你,抱歉

2017-11-28 15:42

去掉 arp.setBaseSqlTemplate(...) 这行代码,使用下面的代码:
arp.getEngine().setSourceFactory(new ClassPathSourceFacotry());

这么配置以后,不仅可以从 class path 中读取模板,还可以从 jar 包读取模板,极其方便

2017-11-28 11:48

@吃饱了晒太阳 你前面的需求是:如何绕过shiro权限验证

2017-11-28 11:38

在 controller 中新建一个专用 action,专门接受这些请求,然后用 shiro 对这个 action 配置好访问权限

2017-11-28 11:17

不要乱猜原因,开启开发模式,看 eclipse 控制台输出的 jfinal action report,如果有异常就分析异常

2017-11-28 11:16

quartz 本身就支持分布式,只要直接用上就可以了。

jfinal 确实有不少人封装过 quartz,即便如此,分布式的用法仍然是 jfinal 无法干预的,仍然无法避免去学习 quartz 的分布式的用法

封装往往只是为了整合更快,但其中的功能通常是不封装的,因为如果一个第三方做得够好,一是没有封装的必要,二是封装以后又得学习封装好以后的这套 API,徒增学习成本

总结一下就是,在 jfinal 中直接用上 quartz,用到它的分布式的功能,直接看他的文档就可以了

2017-11-28 11:13

@Yiww order by 不支持问号占位,这个是 JDBC 决定的,不是 jfinal 可能控制的。

order by 要动态,完全可以通过传参的方式, cond.set("order", "order by update_time desc, other_field asc")

然后在模板中用 #(order) 来输出即可