2019-02-21 12:11

NoSuchMethodError, 可能是你部署时的 cos 版本不同,检查一下 tomcat 下面的 lib 包下面是否还存在 cos 版本

2019-02-21 12:09

这个就奇怪了,在我这没事,是不是你改过源码? 下载最新版本在本地跑跑试试

2019-02-20 21:25

参考一下官方文档:
https://gitee.com/jfinal/jfinal-weixin/wikis

2019-02-20 17:18

异常已经很清楚了: 身份验证失败

对方 email 服务器不接受你的发送请求,检查用户名密码,端口之类的,服务器端要开启 stmp pop3 等服务

2019-02-20 16:53

@Terely 拦截器是单例,是整体缓存的,才能达到极致性能,不允许删除

全面掌握拦截器的用法,根本无需采用删除的办法来满足需求

拦截器可配置 global、routes、class、method 四个级别,还有 @Clear 配合删除,足以满足各种需求,根本用不上动态删除

2019-02-20 16:32

在需要被移除的拦截器中用 if 判断一下,不要调相关逻辑就好,例如,在决定移除的地方先放个标记值:
if (...)
inv.getController().setAttr("removeInterceptors", true);

然后在被移除的拦截器中:
Boolean remove = inv.getController().getAttr("removeInterceptors");

然后根据 remove 决定是不是要调用本拦截器中的逻辑

你这个需求要考虑一下用 @Clear 注解来移除拦截器,更优雅,看一下 @Clear 文档:
https://www.jfinal.com/doc/4-4

2019-02-20 15:50

@jounzhang 大致也差不多,都是一个时机问题,时间有限每个贴子我只有 10 秒的时间去读

单步调试一下,利用 initLog() 这个机制应该可以解决

2019-02-20 15:49

即便找不到,也可以将其读文件内容存放的位置由 File 改为 ByteArrayOutputStream,指向内存即可

2019-02-20 15:48

@xnh 前面只是表达一个方向,对于 http 请求中的 file、para 的解析还得需要按照 HTTP 协议的规定来做,这部分代码可以从 cos 或 common upload 中拿来代码使用

或者 cos 这类工具中本身就有支持读 file 到内存中的 API,只需传入 request 即可使用,可以找找

2019-02-20 15:38

@xnh 这个可以不用做到 jfinal 中,而是直接扩展

在 controller 中通过 getRequest() 拿到 request 对象,然后 request.getInputStream() 去读里头的文件数据就好

个人时间有限,jfinal 只能顾到绝大多数场景,你的方案就挺好了,感谢你的分享

2019-02-20 15:01

@capfyun 为了安全,在 windows 系统里面下载过来的 CHM 默认无法打开,需要如 @王者风范 所说的方式解除安全锁定

2019-02-20 14:17

@王子鹏 目前不支持该功能,可以参考虑里头的 SqlReporter.java 来做下扩展

2019-02-20 11:58

你的 Filter 的时机太早,比 jfinal 初始化要早,所以会获取到 null

一个解决办法是使用 Handler 代替 Filter,第二个解决办法是想办法让 log 初始化的时机推后,例如做个 getLog 方法:
private Log getLog(...) {
if (log == null) {
log = ....;
}
return log;
}

注意看 JFinalFilter 中有一个 initLog() 方法,就是因为这个时机问题,该方法是便于 log 后续被初始化,多调试一下,了解流程

2019-02-19 21:45

@zhangshiqiang 回头策划将 jfinal 所有 change log 汇总分享出来,开源七年多,上千项增强与改进吓死人