2017-05-24 11:03

升级到 jfinal 3.1,里面有一个 paginateByFullSql(...) 方法可以使用,如果不想升级,可以参考 paginateBuFullSql(...) 方法在 YourModel 中添加这样一个方法

引发这个问题的原因是分页计算 totalRow 的 sql 是不能有 order by 子句的,而你的这个 sql 貌似需要这个 order by 才算正确,产生了冲突

2017-05-23 19:25

此外,站在 jfinal 的角度,从 table 反向生成 model 复杂度低、工作量小,稳定可靠

2017-05-23 19:24

jfinal 没有开发这个功能,但你可以通过 Db.update(sql) 来实现这个功能

jfinal 主张数据是核心,需要非常稳固可靠,用程序去生成表结构,总是有点不放心,手动去创建表可以精细化去控制表结构、字段类型、字段长度等等

2017-05-23 19:10

RedisPlugin 构造时的参数有很多,如果要添加对这些参数的重载方法,参数组合起来绝成的构造方法数量非常之庞大

因此,jfinal 选择了只添加认为比较常用的构造方法的组合,如果这些组合不能满足开发者需求,可以使用那个参数最多的构造方法使用。是麻烦了点

2017-05-23 11:40

if(jo.getIntValue("CityID")==shiID) 这个 if 判断的值是 true 还是 false ?

2017-05-23 10:39

光看 bean 看不出啥问题,关键是你如何存,如何取?

2017-05-23 10:36

@cleverbug 你还可以通过扩令扩展来实现这个功能,用起来会更方便,例如这样用:
#i18n(key)

2017-05-23 10:20

@Ferrari8899 打个官方广告,这类解决方案,现成的代码,在 jfinal club 项目中都有,直接可以使用,可以考虑一下加入俱乐部

2017-05-23 10:14

将此拦截器配置为全局拦截器:
me.add(new LoginSessionInterceptor());

此外,很多年前就不这么用了,session 在应用重启时会丢失,无论是开发还是生产环境都非常不便,现在我们做登录 session 维护都是直接写入数据库,然后在数据库与内存间使用缓存提升下性能

由于登录数据是放在数据库中的,当应用断电或重启都无所谓

2017-05-23 10:12

写个拦截器,然后判断 session 中的相关值是否存在,存在则继续,不存在则重定向到 login 页面,几行代码的事:
Account loginAccount = inv.getController().getSessionAttr("loginAccount");
if (loginAccount != null) {
inv.invoke();
} else {
inv.getController().redirect("/login");
}

2017-05-23 10:09

@leomj 定义 NULL_INTERS 长度为 0 的拦截器数组,是为了在没有全局拦截器时,对全局拦截器的拼接,避免使用 if ( xxx != null) 的判断

2017-05-23 10:08

@leomj 在 configInterceptor(Interceptors me) 中添加即可看到:
me.add(new GlobalInterceptor());

2017-05-23 09:36

@22ss 用到了前面介绍的两个方向排查出来的?

2017-05-22 21:25

@leomj 注意看这两个属性:
private Interceptor[] globalActionInters = NULL_INTERS;
private Interceptor[] globalServiceInters = NULL_INTERS;

在添加全局拦截器的时候,数组会添加进去

2017-05-22 21:14

@zan7755 不好意思,后来把这事忘了,现在可以下载 jfinal 3.1 的 changelog 了: http://www.jfinal.com/download/?file=jfinal-3.1-changelog.txt