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: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-19 21:45
@zhangshiqiang 回头策划将 jfinal 所有 change log 汇总分享出来,开源七年多,上千项增强与改进吓死人