2018-01-25 13:13
@我要做菜鸟 jfinal 也有很多办法来接管 session,例如,在 handler 或拦截器中接管 session 的实现,还可以通过在 BaseController 中接管 setSessionAttr(...) getSessionattr getSession() 这些方法来接管
2018-01-24 23:42
使用 model 而不是 Db 静态方法来查询,返回的结果是封装好的 Model,这些 Model 还生成过 getter setter 方法,在开发过程中使用这些 setter getter 方法对于重构有好处,而且不需要记忆字段名
当你使用 Db 查询时,得到 Record 对象,取值时需要这样: record.get(字段名),这不仅有记忆上的负担,对于重构来说也不方便,而且字段名写错以后也可能引发 bug
此外,model 中还可以实现一些其它的方法,在使用过程中的好处不言而喻,例如,你看一下 jfinal club 项目中的 Account 在 LoginServer 中的用法:
if (loginAccount.isStatusLockId()) {
return Ret.fail("msg", "账号已被锁定");
}
如果使用的是 Record,你需要这样来操作:
if (record.getInt("status") == -1) {
return Ret.fail("msg", "账号已被锁定");
}
无论是在可读性还是可维护性上都会差很多,在多数应用场景下都会使用 Model,也有一些比较特殊的场景特别适合使用 Db + Record 模式
例如,做一个具有大量关联查询的报表系统,多表关联出来的字段值,在 model 中很多都没有相应的 getter setter 方法,所以前面谈到的有关 setter getter 方法带来的优势也就没有了
2018-01-24 15:56
@rock_ping 用这个办法解决一下:http://www.jfinal.com/share/410
2018-01-23 11:16
@jffly 这个方法仅仅是转移了而已,转到了 configRoute(Routes routes) 之中,用法与规则完全一样:
routes.setBaseViewPath(...)
看一下手册:baseViewPath