2021-01-06 15:55

@jfinal爱好者22 那为什么要发布这个贴子呢? 很明显没人知道这是针对什么在问题,更谈不上回答了

既浪费了你自己的时间,也浪费了别人的时间

2021-01-06 11:44

你没有在用 jfinal , 异常中的提示全是 net .harsor 这种东东,我估计你用的 @Inject 也不是 jfinal 中的 @Inject

jfinal 的 @Inject 是支持循环依赖的,非常完美的设计

2021-01-06 11:42

jfinal 的 active record 模块是 10 年前设计的,当时还没有 JDK 8 ,所以也就没用上 Stream 这样的设计,因为当时还不支持

后来用户量大了,也不方便改,目前只有新加的功能有类似的设计,例如 template 方法与 each 方法:
Db.template(...).find();
Db.template(...)each( lambda );

2021-01-06 11:38

@halason setBaseDownloadPath 与 setBaseUploadPath 可以配置绝对路径,例如:
linux 下配置: "/var/my-project/upload"
windows 下配置: "D:/my-project/upload"

2021-01-06 11:36

@一路走来 可行是可行,但是没有必要,因为你可以这样来用:
Log.getLog(Xxx.class).error(...);

还可以这样来用:
Log.getLog(getClass()).error(...);

2021-01-05 14:02

@steven_lhcb_9527 注入用 @Inject 或者 Aop.inject, 远比 Ehnahcer 要好用要强大

如果是要创建对象并且要注入,用 Aop.get(...)

2021-01-04 22:08

当然可以的,将
mvn clean package
改为
mvn package
即可

2021-01-02 20:59

关键看异常信息,配置好日志,让异常信息输出来,根据异常去解决

通常是没有删除权限

2021-01-01 15:58

@BTMTimor 如果对象本身就是 Model 或者 Record 类型的,可以这么来用:
object.get("col" + 1);
可以做到 object["col" + 1] 一样的功能


此外,还提供了 FieldGetter 抽象,可以任意扩展 field 表达式,十分方便
Engine.addFieldGetter(int, FieldGetter)

2021-01-01 15:25

异常提示同一个全局拦截器添加了两次,检查一下

2021-01-01 15:24

应该是问题定位有问题,异常中并没有提到 -- 也没有提到参数,更没有提到拦截器

从异常来看是 Response 已经响应过了,然后你又调用了 redirect(...),或者调用了 getWriter(),从而提示你 Committed 异常

2020-12-31 23:14

这个需求以前没人提过,可能并不强列,在语义上不太契合

2020-12-30 17:04

说白了是有部分 JDK 版本的 HashMap 扩容时有 bug

ConcurrentHashMap 的性能当然不错,但肯定不如 HashMap

补充一下,你谈到了 SyncWriteMap 里面很多的 synchronized,这个不打紧,因为用到 SyncWriteMap 的场景多数只是在初始化的时候写入数据,后面就全都是读数据了,所以使用 synchronized 是没关系的

2020-12-30 17:03

用到 SyncWriteMap 的地方本质是并不在乎并发的,因为里头的数据本身就可以共享

为啥要用 SyncWriteMap,这个在头部的注释中已经说明:
SyncWriteMap 同步写 HashMap。创建原因是 HashMap扩容时,遇到并发修改可能造成 100% CPU 占用