2019-09-20 16:59
@Winne 自己亲手打造的社区,热爱
楼主这个提问还算好的,这样的就纯属不遵重人了:
http://www.jfinal.com/feedback/6500
首先,该问题与 jfinal 无关。其次,正文就扔一个异常信息,对自己的问题毫不负责,对回答的人毫不遵重
2019-09-20 16:50
@tntxie 在 service 上也是类似的, 只不过 service 层上的拦截器无法通过调用下面的方法:
inv.getController()
inv.getActionKey()
这些方法可能你在生成缓存的 key 时需要使用, 但你可以换个思路解决,例如:
// 获取当前 service 的类名
String className = inv.getTarget().getClass().getName();
// 获取当前调用的方法的方法名:
String methodName = inv.getMethod().getName();
// 获取当前调用的方法的参数列表:
Class[] paraClasses = inv.getMethod().getParameterTypes();
// 获取当前调用的方法的参数值:
Object[] args = inv.getArgs();
然后通过组合上面 className、methodName、args 三个变量就可以组合得到一个可以使用的 key 值用于缓存了,paraClasses 这个变量或许还用不上
有了 className、methodName、args 三个变量,你自己再弄一个生成 key 值的工具方法,后面的代码就很好写了,与 com.jfinal.plugin.ehcache 下面的方案差不多
2019-09-20 16:33
可以完全参考 com.jfinal.plugin.ehcache 下面的设计,里头有 CacheInterceptor
逻辑是完全一样的,只不过前者将数据放 ehcache 中, 而你是需要将数据放 redis 中
jfinal 的 aop 设计,拦截器就是切面,环绕拦截的逻辑如下:
public MyInterceptor implements Interceptor {
public void intercept(Invocation inv) {
before();
inv.invoke();
after();
}
public void before() {
这里放上环绕拦截的前拦截代码
}
public void after() {
这里放上环绕拦截的后拦截代码
}
然后用 @Before 配置好就可以使用了
}
2019-09-20 16:11
@一个小菜鸟 先观察一下控制台输出的 jfinal actionn reporter 的 parameter 这一栏的数据格式
然后再选择具体的 get 系列方法,如果你是传的数组,需要 for 循环,例如:
List list = new ArrayList();
for (...) {
list.add(getBean(...));
}
要根据数据的格式,灵活搭配,这里的关键是,你要先掌握文件中的各种 get 方法的用法,然后观察 jfinal action reporter 的 parameter, 再合理选择
2019-09-20 14:41
@Code_Cat 使用 oracle 的 number(1) 即可,也就是说长度要是 1
https://www.cnblogs.com/softidea/p/7101091.html
2019-09-20 14:28
@Code_Cat 应该可以生成 boolean 类型, oracle 用的应该不是 bit ,应该有个对应的字段类型