`
yxb1990
  • 浏览: 69638 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SpringMVC ajax方式返回异常处理信息

阅读更多

一直在纠结于标题取什么名字好,读起来好拗口,算了,回归正题。

在网上看到SpringMVC配置异常处理都是返回一个jsp页面给客户,但是很多公司(包括我公司)的前端都是ExtJs,所有的请求都是Ajax请求,这样当后台发生异常时客户什么也看不到,也没有什么提示信息出来,公司以前用的是Struts2(现在还是),用的是一个拦截器,

 

public String intercept(ActionInvocation paramActionInvocation) throws Exception {
	try{
		paramActionInvocation.invoke();
	}catch(Exception e){
		String message = e.getMessage();
		if (message == null){
			message = "各种错误";
		}
		ServletActionContext.getResponse().getWriter().print("{failure:true, msg:'" + message + "'}");
	}
	return null;
}

 

 这样前台就能弹出信息了。注意还要在把struts中默认的的异常拦截器去掉。

 

跑题了,SpringMVC中类似,只不过用的不是拦截器,是框架提供的异常处理支持。

一种方法是在Controller类中使用@ExceptionHandler注解,但是局限是只能在该类中使用。

 

@ExceptionHandler
public @ResponseBody String handleException() {
	return "ajax 错误信息";
}

另一种方法是实现HandlerExceptionResolver接口,并注册之。

resolveException方法代码:简单。

 

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
	response.setCharacterEncoding("UTF-8");
	try {
		PrintWriter writer = response.getWriter();
		writer.write("ajax 错误信息");
		writer.flush();
	} catch (IOException e) {
		
	}
	return null;
}

 

分享到:
评论
6 楼 chen_ji_gang 2015-03-11  
PrintWriter writer = null;
                try { 
                writer = response.getWriter();
                    writer.write(ex.getMessage()); 
                    writer.flush(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } finally{
                writer.close();
                }
                return null; 

这个是会返回到前端,xml需要配置一下,
<beans:bean id="exceptionResolver" class="*****ExceptionResolver">
    </beans:bean>

但是我遇到的问题是,有的项目是到ajax的success,有的是到ajax的error。求解
5 楼 yxb1990 2013-02-19  
ysa198584 写道
是不是哪里复制过来的啊,我看了好几个,都和你的一样,我的结果是报500错误,根本到不了前端!


你看下是哪里报500错误,你注册的能扑捉到发生的异常吗?
4 楼 ysa198584 2013-02-06  
是不是哪里复制过来的啊,我看了好几个,都和你的一样,我的结果是报500错误,根本到不了前端!
3 楼 yxb1990 2012-11-03  
第二种方式要注册的异常处理器的,现在转战互联网了,不记得怎么弄了。
2 楼 小猪晒太阳 2012-10-24  
现在急于想知道你的解决方法、因为我的需求跟你的需求一样样
1 楼 小猪晒太阳 2012-10-24  
、 采用第二中方式
        PrintWriter writer = response.getWriter(); 
        writer.write("ajax 错误信息"); 
        writer.flush();

输出 肿么不行啊、

前台接收不到、、、 
你测试成功了吗??

相关推荐

Global site tag (gtag.js) - Google Analytics