2020-11-10 17:09

PathScanner 是极简设计,一共才 177 行代码:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/core/PathScanner.java

2020-11-10 17:08

@琴海森林 用上官方的 PathScanner, 改造一下你的扫描代码就可以了,很方便的

2020-11-10 17:07

写一个拦截器,用一个 ThreadLocal 传递, spring boot 本质上也是在 RequestContextHolder 通过 ThreadLocal 传递的

大致代码如下:
public class RequestContextHolder implemetns Interceptor {
static ThreadLocal《Request》 TL = new ThreadLocal();
public void intercept(Invocation inv) {
TL.set(inv.getController().getRequest());
inv.invoke();
}

public static Request getRequest() {
return inv.getRequest();
}
}

然后配置为全局拦截器:
configHandler(Handlers me) {
me.add(new RequestContextHolder());
}

用的时候这样:
RequestContextHolder.getRequest().getAttribute(...);

2020-11-10 17:02

@琴海森林 你这么一说,倒真是可以的,主要是因为现在的扫描方案性能极高

不过现在已经了自动生成功能,再扫描的话必要性就低了

要知道 Model 的自动生成功能有一个重要的点就是生成 baseModel, 这个可以快速响应数据库的变动

只要是生成 baseModel 的需求存在, 那么顺便生成一下 model 与 tabel 的映射也就可以了

2020-11-10 17:00

@天晴 这个只在开发环境下支持,生产环境不支持

java 是静态语言,要做到你说的需求很不容易,多年以前阿里就做过这样的尝试,最后失败了

2020-11-10 16:19

用 sql 批量修改更方便:
String sql = "update ... set ... where id in (" + StrKit.join(id, ",") + ")";
Db.update(sql);

2020-11-10 16:09

在 undertow.txt 中添加配置就好:
undertow.ssl.protocol = TLSv1

具体的实现代码在这里:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/ssl/SslConfig.java

从代码中可以看出来, 还有很多 ssl 参数是可以通过参数指定的

jfinal 官方出的东西,虽然很多都不写入文档, 但功能已提前做好了。随着你开发的深入,会发现好多功能是现成的

这是因为 jfinal 的极简设计,做到了 "少即是多"

2020-11-10 16:06

@天晴 现在就是动态扫描的

2020-11-10 12:10

@琴海森林 社区所有资源全改成了路由扫描的用法,下载试用啊,超爽的

routes 级拦截器、baseViewPath 这些功能都还在是很爽的

还有一个爽点就是扫描速度极快,根本不比手动添加路由慢

2020-11-10 12:01

@琴海森林 功能一直是这样的, @ActionKey 顾名思义, 就是 action 的 key,这个 key 是会覆盖 controllerPath 配置的

否则应该改名叫 methodKey

jfinal 4.9.03 这个版本还新增了一个 controllerPath 共享功能,也就是多个 Controller 可以映射为同样的 controllerPath, 这个功能可以大大减少对 @ActionKey 的使用需求

2020-11-10 11:50

@琴海森林 @ActionKey 的功能没有被影响,你再试试

2020-11-10 10:49

补充一下,官方文档已经追加了这部分的内容:
https://jfinal.com/doc/2-3

俱乐部视频也上新了这部分的视频:
《jfinal-route-scan.mp4》
里头详细介绍了用法,重点介绍了路由拆分、 routes 级拦截器、baseViewPath 的用法,现在就可以下载了:
https://jfinal.com/my/club

2020-11-10 10:47

没错的,与老版本的行为是完全一样的,其中你讲的 setViewPath 是笔误,要改成 setBaseViewPath

要立即掌握扫描功能的用法,只需要记住下面的要点:
@Path(value, viewPath ) 的两个参数与 Routes.add(controllerPath, controllerClass, viewPath ) 的第一和第三个参数是完全等价的

2020-11-09 21:26

@990021266 如果实在找不到原因,可以事先用程序触发一次请求,让异常先抛出来。然后在用户真正请求到来的时候就没有问题了