用 Interceptor做日志 如何获取controller 的返回值

用 Interceptor做日志  如何获取controller 的方法是否执行成功 或者方法的rander 值;

是ajax提交 返回值 用的是 renderJson(XX)

4.5版本 用 ((JSONReader)controller.getRender()).getJsonText(); 报错,应该如何解决

评论区

JFinal

2019-10-24 20:00

在拦截器里面用下面的代码:
inv.invoke();
Render render = inv.getController().getRender();
if (render instanceof JsonRender) {
JsonRedner jr = (JsonRender)render;
String jsonText = jr.getJsonText();
.....
}

上面这种用法一般是不需要的,我不知道你的具体需求,应该是别的办法来解决你的需求

yunqi

2019-10-25 07:10

其实就是想在拦截器中获取当前拦截的方法有没有抛出异常,或者render 的json 中是否有成功的标记,来做系统日志,判断方法是否执行操作成功,request 的内容都能获取到,就是不知道如何获取是否抛出异常或者 response 的返回结果,另:异常也是通过拦截器统一做的异常处理

JFinal

2019-10-25 09:59

@yunqi 通过 try catch 可以获取到内层拦截器、controller、service 中是否向上层抛了了异常:
try {
inv.invoke();
} catch (Exception e) {
这里处理
}

热门反馈

扫码入社