2020-06-03 13:52
我也是使用同样的方式,把return的值在拦截器中处理返回,同时把一些异常也统一处理了。
Controller controller = inv.getController();
try {
inv.invoke();
Object returnValue = inv.getReturnValue();
// 支持jfinal原生的返回void的请求
if (returnValue == null) {
return;
}
if (returnValue instanceof ResponseBean) {
controller.renderJson(returnValue);
} else {
controller.renderJson(ResponseBean.success(returnValue));
}
} catch (NoLoginException e) {
controller.renderJson(ResponseBean.error(ResponseErrorEnums.NOLOGIN));
} catch (ParamsValideException e) {
controller.renderJson(ResponseBean.error(e.getErrorMsg()));
} catch (ServiceException e) {
controller.renderJson(ResponseBean.error(e.getCode(), e.getMsg()));
} catch (Exception e) {
String errorMsg = "服务器出现异常";
if (!StrKit.isBlank(e.getMessage())) {
logger.error(e.getMessage());
errorMsg = e.getMessage();
}
e.printStackTrace();
controller.renderJson(ResponseBean.error(errorMsg));
} finally {
RequestContextUtil.remove();
}