项目全部采用AJAX + JSON的方式请求与响应。对controller层做集中的异常、错误处理。
避免由于controller层出现未捕捉的异常、错误,所导致的前端页面的请求没有反馈,因此使用AOP方式拦截所有controller方法的执行情况,方法出现异常则直接使用Response向客户端写出错误JSON信息。但现在出现一个问题,就是当controller入口方法调用本类里其他非静态,非私有方法时,也会被拦截所捕捉。如何才能只对入口方法进行拦截,而不关注入口方法调用的其他方法呢?
aop.js文件
var ioc = {
controllerInterceptor: {
type: 'a.b.aop.ControllerInterceptor'
},
$aop: {
type: 'org.nutz.ioc.aop.config.impl.JsonAopConfigration',
fields: {
itemList: [
["a\\.b\\.business\\.controller\\..+", ".+", "ioc:controllerInterceptor"]
]
}
}
}
Controller文件
……
@At("/a/admin")
@Ok("json")
public Object adminTest(){
……
return getSession().getAttribute("qqq");
}
/* 这是个父类里方法 */
protected HttpSession getSession(){}
……
拦截器会对adminTest和父类里的getSession都进行拦截,而只需要对adminTest进行拦截即可。方法名字无法限定,或者可以设置只拦截public方法,希望得到帮助~万分感谢。