过滤器参数获取问题

在使用缓存过滤器的时候,遇到个问题

看代码是用ActionKey和参数组合作为缓存的key

但我在用的时候发现 getPara 是空的,那么方法每一次进入的时候只能拿到第一次缓存的数据。

image.png

image.png

评论区

JFinal

2020-10-29 11:40

上面的代码给出了一些调用的结果,你具体的需求是什么?修改原文补充一下

2020-10-29 12:15

@JFinal 波总,是使用CacheInterceptor的问题,getPara获取不到参数。

JFinal

2020-10-29 12:35

@谢 请求 URL 为 /admin/bus/new/listJson,这里头没有传递 urlPara,所以肯定是空

NewController.listJson() 这个方法没有形参,所以 inv.getArgs() 也必定是空的

而你的参数也不是问号挂参,所以 getQuerString() 也必定是空的

从控制台的输出来看,你传递的参数需要通过 get("status)、get("page) 等方法获取

当然,你可能不希望这么来获取,因为无法动态化,所以你可以通过继承 CacheInterceptor, 覆盖一下 buildCacheKey() 方法,使用类似下面的办法得到动态的参数:
Map paraMap = controller.getParaMap();

然后将上面的 paraMap 转换成 cacheKey , return cacheKey 即可

JFinal

2020-10-29 12:36

这里有些知识点,需要了解: urlPara、queryString

2020-10-29 13:56

@JFinal 明白了,谢谢...