2019-10-30 20:17

jfinal 4.7 已经添加了 hgetCounter 方法,可以使用了

2019-10-30 20:16

代码干净利落,就是这么玩的,感谢分享,赞

2019-10-30 20:15

@调度单 AnsiSqlDialect 的分页为了兼容不同数据库,速度慢

2019-10-30 20:14

我不知道你所说的 “根据controllerKey和权限字符串做AntPathMatcher” 是什么需求,我自己没用过

你可以试着从 spring 中将相关代码抽取出来使用

最好是将需求说清楚,才好解决

2019-10-30 20:12

贴出详细代码才能知道原因

我估计你用的老版本的 jfinal , 升级到 jfinal 4.7, 这个版本的 Aop 是最好的

2019-10-30 20:11

@程序员是真的雷 先看看文档吧,学习一下基本用法,很多问题自然化解

2019-10-30 19:31

@Westwood 我明白你的需求了,你是希望 save() 在往数据库插入一条数据以后,可以立即使用 model.getXxx() 来获取使用默认值生成的字段值

jfinal 目前只能满足这种需求的自增主键的获取,无法满足你在例子中的字段 b 的获取

自增主键的获取可以这样:
model.save();
model.getId();
也就是说自增主键在 save() 方法调用以后是自动从数据库获取到的

2019-10-30 18:08

Flash 用得越来越少了, html 5 中能不能开启报像头拍照?

感谢分享,赞

2019-10-30 14:42

多个地方共用同一个 appId 获取 token 的情况,后获取到的会让前获取到的 token 失效

解决办法是用一个中心式的缓存,让多个地方共用缓存中的 token

2019-10-30 13:27

估计你的 awardStatus 为 String 类型,用一下 enjoy 的 extension method:
#(awardStatus.toInt() == 6)

2019-10-30 13:26

@Westwood 可能你将 jfinal 的 model.save() 当成是 hibernate 去理解了

save() 方法只会去保存 set 过的值,其它的值不会改变它

如果你的代码由于某种原因调用了 model 的相关 set 方法,可以用下面两个方法来解决:
1:model.removeNullValueAttrs();
model.save();
remove 方法会去除 model 内的 null 值字段,然后你再 save() 就不会覆盖掉数据库的默认值了

2:model.remove(fiel1, fiel2, field3, ...);
model.save();
remove 方法会去除 model 内指定的字段,可同时指定多个,然后 save()

3:model.keep(fiel1, fiel2, field3, ...);
model.save()
如果要去除的字段很多,反而是需要保留的很少,可以使用 keep 方法指定要保留的字段值

jfinal 数据库操作早已解决了这方面问题

2019-10-30 11:33

@Westwood 最好的办法是数据库表的字段直接设置默认值

2019-10-30 11:03

@Westwood 在最终的 model 中,覆盖父类的 save() 方法,判断默认值是不是有,没有的话,设置一个,例如:
public MyModel extends Model {
public boolean save() {
if (get(xxx) == null) {
set(xxx, defaultXxx);
}

if (get(yyy) == null) {
set(yyy, defaultYyy);
}

return super.save();
}
}

当然如果希望更完美,可以先定义一些默认值的常量,例如:
public MyModel extends Model {
public static int STATUS_FAIL = 0;
public static int STATUS_OK = 1;

public boolean save() {
if (get("status") == null) {
set("status", STATUS_OK);
}

return super.save();
}
}