2016-10-16 23:10

@xlj337 jfinal 提供了多种转 json 的方式,而 JFinalJson 实现并不会调用 getter 方法,所以可以这样用:
JFinalJson.getJson().toJson(data) 这样就可以在转化 json 时避免使用 fastjson 了

2016-10-16 23:08

jfinal 项目定位于 MVC + ORM 框架,所以暂时没有添加 dump 之类的功能,否则 jfinal 自身会越来越膨胀,建议大家以扩展的方式完善周边工具,形成一个生态系统

在 jfinal 基础之上开发数据库备份工具也很容易的,jfinal 提供了便利的 Db + Record 模式可以很容易地得到数据,然后 Db.use(...) 即可切换数据源,最后再 Db.use(...).save(record) 即可备份到新的数据源

如果是 dump 到外部文件,也可以通过 Db + Record 很容易地实现,如果你扩展出这样的工具,希望能分享给社区其他朋友

2016-10-16 19:56

建议用第一种方式,这样可以随心所欲得到想要的数据。第二种方式建议配合缓存使用,在调用 getter 方法时先去缓存取数据,这样的话 sql 语句过多的问题就不存在了

2016-10-15 19:50

此外,还有一种方式: new Record().setColumns(model) 也可以

2016-10-15 19:50

@jinyuanyuanab 前面纯属手误,本是指 model.toRecord()

2016-10-15 19:13

@jinyuanyuanab 看 model 中是否有个 toModel()方法,还可以试试 new Record() 后往里面切set model 进去

2016-10-15 15:41

根据异常信息可以看到:com.dlb.dao.WebUser 这是一个独立的类型,并不是 Record,转换的时候当然就出问题

很显然,是程序在某个地方向使用了相同的 key,向 session 中放入了 WebUser 对象,而不是 Record 对象,搜索一下代码中的 "userInfo" 这个 key 值就会发现,除了利用这个 key 向 session 中放入过 Record,还放入过 WebUser

2016-10-15 15:38

@yaoqingqing Cron4jPlugin 有一个无参构造方法,利用 cp = new CronPlugin() 创对象以后,再手动 cp.addTask(...) 逐步进行配置即可,而 cp.addTask(...) 所传入的参数来源可以是任何方式,包括数据库

2016-10-14 23:08

不能使用反射的具体代码是什么样的? 可以在这个贴子里面补充一下,一直是可以用反射的

2016-10-14 17:19

@sphsyv 为了一个 devMode 下可以用一行代码解决的问题去依赖于一个 apache jar 包不值得

2016-10-14 14:28

SimpleDateFormat 是非线程安全的,所以在多线程并发时会出错误,并发量大到一定程度可以测出来,这里并不重要,这个只会在开发模式 devMode 下会使用,生产环境不走这里

2016-10-14 14:26

先调用 getFile(...) 或 getFiles(...) 系列方法,然后再调用 getModel、getBean、getPara 这类方法,具体原因在 jfinal 手册上有红色字体明确说明

2016-10-14 13:08

jfinal 的 generator 模块,所有类都是面象扩展设计的,所以,你可以通过自定义一个 public class MyBaseModelGenberator extends BaseModelGenerator 覆盖掉父类中的 genClassDefine(...) 方法,可以随心所欲地将 Model 切换成你自己的中间 XxxModel

这个中间 XxxModel 中继承自 Model,里面可以写一些通用的方法,这样你的所有的 models 就拥有了这些扩展方法

此外,除了 BaseModelGenerator 外,其它的类都可以通过这种方式实现千变万化的需求

2016-10-13 15:13

@胖之 弄一个全局拦截器,将当前已经登录的用户,直接放进去,在拦截器通过这行代码即可:
inv.getController().setAttr(LoginService.loginAccountCacheName, loginAccount);
前面的 LoginService.loginAccountCacheName 仅仅是一个字符串而已,可以根据自己的喜好来起个名,后面的 loginAccount 是登录后的用户对象