2017-01-02 21:21

这个不是错误,是警告,注意看前面的 [WARN],如果是错误则会输出 [ERROR]。只要将日志级别由 warn 提升到 error 就不会输出这些警告

c3p0 很久没有更新过,建议换 DruidPlugin,这个问题将不负存在

2017-01-01 20:50

这个设计基于爱因斯坦的一句名言:A clever person solves a problem,A wise person avoids it. 聪明的人解决问题,而智慧的人消灭问题或者叫避免问题

这样设计是为了避免开发者手误写错字段名,而造成 bug,而从需要花时间再去解决这个 bug。如果需要支持字段不存在的场景,多传一个参数就可以了:
getModel(User.class, true)

以上的代码可以支持字段不正确的场景,支持 getPara 混用

2017-01-01 17:57

@xzquan 返回true 对于 start() 来说是告诉 jfinal 插件启动正常,返回 false则 jfinal 会报出异常,终止项目的启动,这种机制是让插件可以告知 jfinal 是否要终止项目的启动

如果某个插件是一个关键性插件,启动不正常就会影响关键业务,这时让项目无法启动是必要的

类似的 stop 是告知 jfinal 插件停止失败,jfinal 会对此写日志,可通过查看日志知道插件为什么没有停止成功,进而去修正程序

2017-01-01 17:53

目前用 sql 是如何实现的,能否分享一下

2017-01-01 17:53

@龙天蝎 这做扩展理更大的好处是便于无缝升级到 jfinal 高版本

2017-01-01 15:07

具体希望知道如何开发插件,只需要看一下 com.jfinal.plugin 包下面的几个现成的插件,照猫画虎就可以了,其中的 DruidPlugin 这类插件只有一个文件,是极其简单的

2017-01-01 15:07

start() 与 stop() 方法会别会在 jfinal 启动与停止时被回调,开发插件,只需要实现 IPlugin 接口,在 start() 里面放入希望项目启动时的操作,在 stop() 中放入希望项目停止时的操作即可

除了 Plugin 以外,jfinal 的主要扩展方式有:Controller、Model、Interceptor、Render、Handler,这五个扩展方式相对比较具体,针对于特定需求去扩展,而 IPlugin 就担当起了不确定需求与方向的扩展,因为 jfinal 无法穷尽所有用户需求和场景,而 Plugin 是一个更加抽象化,没有指明具体方向的扩展

2017-01-01 10:51

还有一种简单的办法,就是通过实现 ISerializer 接口并定制序列化和反序列化的策略,然后通过 redisPlugin.setSerializer(...) 设置一下就可以了

此外,还可以通过实现 IKeyNamingPolicy 接口,对 key 的命令策略进行定制

2016-12-31 22:20

context path 是一个很鸡肋的设计,可以完全不需要,在开发的时候尽量去避免使用它,尤其不要在路径中不要涉及 context path 这件事

2016-12-31 22:12

@Irin.Chan 感谢支持 ^_^

2016-12-31 22:12

将 context path 设置为 "/" 就什么事都没有了,参考这里:https://my.oschina.net/jfinal/blog/353062

注意启动项目的方式参考 jfinal 手册,在首页有下载

2016-12-31 12:01

这种方式想法很新颖,以前没看到过还能这么玩的。对于后台管理需要根据不同的条件进行查询与过滤的,这是一种很好的封装方式,能够减少很多代码量,感谢分享

2016-12-30 00:20

目前还没顾得上添加搜索功能,看到有用的文章,暂时可以用一下收藏功能

2016-12-29 17:55

Record 对象 getColumns() 出来的本来就是你需要的 map,所以不需要转换,只要拿到再放入 List 中即可

2016-12-29 17:55

比这快的方法不用转换,类似于下面:
List list = new ArrayList()
for (Record record : pageList) {
list.add(record.getColumns());
}