@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
HandlerMethod hMethod = (HandlerMethod)handler;
//参与成员发送消息
RequiredSendMessage requiredInterceptor = AnnotationUtils.findAnnotation(hMethod.getMethod(), RequiredSendMessage.class);
if(requiredInterceptor!=null){
List<OaMessage> messageList = (List) request.getAttribute("messageList");
if(messageList!=null&&messageList.size()>0){
int len = messageList.size();
for(int i=0;i<len;i++){
OaMessage omessage = messageList.get(i);
oaMessageService.sendProjectMessage(omessage);
}
}
}
}
这样会抛类型装换异常的
你的请求里面还带有其他的请求的时候,而且不是你配置的拦截的规则,那么它转换类型的时候就报错了。我这边是页面请求里面还有js的请求,所以controller的方法请求通过了,js的拦截到的时候,你的handler 其实不是你配置的那个,所以就出现这个问题了
解决办法:
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {//handler=default//异常
if (!(handler instanceof HandlerMethod)) {
return;
}
HandlerMethod hMethod = (HandlerMethod)handler;
//参与成员发送消息
RequiredSendMessage requiredInterceptor = AnnotationUtils.findAnnotation(hMethod.getMethod(), RequiredSendMessage.class);
if(requiredInterceptor!=null){
List<OaMessage> messageList = (List) request.getAttribute("messageList");
if(messageList!=null&&messageList.size()>0){
int len = messageList.size();
for(int i=0;i<len;i++){
OaMessage omessage = messageList.get(i);
oaMessageService.sendProjectMessage(omessage);
}
}
}
}