spring mvc 异常处理 HandlerExceptionResolver 不能返回到视图

zhang20141212 2015-01-05 11:24:11
自定义的异常处理类,继承handlerexceptionresolver

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class MyExceptionHandler implements HandlerExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// TODO Auto-generated method stub

//同一处理异常
Map<String, Object> model = new HashMap<String, Object>();
model.put("ex", ex);

System.out.println("异常信息:"+ex.getMessage());////当出现异常时,可以输出异常信息,在后台[/color]
return new ModelAndView("error", model); //但是,这句没有转到error.jsp页面!!!为善么啊 ![/color]
}

}



spring配置文件

<!-- 定义视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 设置spring的非检查型数据访问异常 -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"></bean>

<!-- 设置全局异常处理bean -->
<bean id="exceptionHandler" class="cn.csai.zhang.test.hibernate.myException.MyExceptionHandler"></bean>



我在controller中都能正确解析视图的,一下是controller的代码

@Controller
public class UserHomeController {

@Inject
private IHomeService homeService;

@RequestMapping("/jsp/userhome")
public String showUserHomePage(HttpSession session, Map<String , Object> model){
String currentUsername=(String)session.getAttribute("currentUser");
User user=homeService.getUserByUsername(currentUsername);

model.put("return_user", user);
return "userhome";///可以正确转到视图
}
}




///高手请帮帮忙啊,着急找工作,在线等。。。。。。
...全文
2431 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
那年花 2017-07-05
  • 打赏
  • 举报
回复
路径问题吧 自己看下路径
qq_35087102 2017-07-04
  • 打赏
  • 举报
回复
楼主!你好,问题解决了吗?
Highnesss 2016-12-10
  • 打赏
  • 举报
回复
你这个肯定是post请求吧,post请求返回视图是作为数据处理的,不会跳转
且随疾风 2016-10-25
  • 打赏
  • 举报
回复
楼主解决了吗 我也遇到了这个问题 如果解决了 麻烦告知QQ1356340943 谢谢
魔力-代码 2016-10-19
  • 打赏
  • 举报
回复
楼主你好问题解决了吗
chanlionnan 2016-10-18
  • 打赏
  • 举报
回复
不要将抛出异常放在 try {} 模块里
tongyu75 2016-06-16
  • 打赏
  • 举报
回复
追加一下,将jsp的byte数大于512(直接在jsp中追加<%response.setStatus(200); %>也可以)
tongyu75 2016-06-15
  • 打赏
  • 举报
回复
我敢肯定你的java代码是没有问题的,只需要确认以下几点就可以解决 1. 将MyExceptionHandler 中的返回结果return new ModelAndView("error", model);拷贝到UserHomeController的return中,运行UserHomeController看看能不能进到error.jsp页面,如果能说明error.jsp的路径是没有问题的。 2.在MyExceptionHandler 中debug调试,看看能不能走到eturn new ModelAndView("error", model);这个位置,就说明error.jsp内容中有问题,查看error.jsp文件头部是否有isErrorPage="true"如果有要么删除要么在IE浏览器中“设置”--“高级”里面,然后取消勾选”显示友好的“问题就应该解决了。因为我刚刚发生这个问题
邓巍 2016-05-18
  • 打赏
  • 举报
回复
你好,楼主,问题解决了吗?我今天碰到类似问题。还请指教
菜 头 2016-05-18
  • 打赏
  • 举报
回复
return new ModelAndView("error").addObject("model",model ); 这样写呢
mml_慢慢来 2016-03-14
  • 打赏
  • 举报
回复
要写全路径,我看的视频
darkread 2016-03-09
  • 打赏
  • 举报
回复
去除@RequestMapping("/jsp/userhome") 中的/jsp 在java web中,所有的url映射全是全局互通的,必须有差别
super_1301 2016-03-08
  • 打赏
  • 举报
回复
同求啊。。。。
踩沙滩 2015-07-12
  • 打赏
  • 举报
回复
return new ModelAndView("error", model); 你这个error看看能不能匹配到相应的jsp呀
Inhibitory 2015-07-10
  • 打赏
  • 举报
回复
Ronrey 2015-07-09
  • 打赏
  • 举报
回复
哥们后来有解决吗?我也遇到了这个问题。
记忆向西 2015-01-06
  • 打赏
  • 举报
回复
你返回的路径好像有问题
zhang20141212 2015-01-05
  • 打赏
  • 举报
回复
引用 1 楼 rui888 的回复:
参考这个
我就是参考那个,,,,,但是呢,转不到jsp视图,,,,我觉得可能是视图解析器出的问题,麻烦你看一下我代码,是不是少了什么?直接return modelandview,,,,不是应该转到视图吗?
tony4geek 2015-01-05
  • 打赏
  • 举报
回复
howsun_zh 2015-01-05
  • 打赏
  • 举报
回复
我是这么做的:

@ExceptionHandler({MaxUploadSizeExceededException.class,SizeLimitExceededException.class})
	public void handleException(Exception ex, HttpServletRequest request, HttpServletResponse response){
		Enumeration<?> names = request.getAttributeNames();
		while(names.hasMoreElements()){
			String name = (String)names.nextElement();
			System.out.println(name + "\t" + request.getAttribute(name));
		}
		Responses.writeJavaScript(response, "alert('错误:上传的文件太大。单个文件不能超过10M');history.back();");
    }  
这个方法可以放在任何一个Controller里,写一次就行。
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧