3.3springmvc-错误体系基本使用
3.3springmvc-异常体系基本使用
这几天在完成一些基本添删改查功能,说实话这个还是比struts2要烦很多呀,因为struts2中有validate功能,使用契约模式,凡是以validateXXX(其中XXX是方法名),在执行XXX前会先执行,这样等于是个pre-check,并且还能起到一些参数的初始化能力。
可惜在springmvc中,只有一个@initbinder,他如同一个全局函数,与WebDataBinder绑定。不过他也有个毛病,就是在我的requestMapping方法参数中必须添加一个entity类型的,才会触发initbinder的函数。
回来说下,这个springmvc基本上可以把异常分成两类:
- 一类是有用户自己在try catch块中定义的
对于,这类spring到时提供了很好的解决方法,那就是
/** * 文章id不正确 * @param bindingResult * @param defaultPage * @return */ @ExceptionHandler(ObjectNotFoundException.class) public ModelAndView handleNotFoundEx(BindingResult bindingResult, String defaultPage) { if(bindingResult == null) return handleErrors(defaultPage); return handleErrors(bindingResult, defaultPage); }
@ExceptionHandler这个还是挺好额,具体的spring自带的pdf中有说明,不过可惜,他不能支持如同:
@ExceptionHandler({xxx.class,xxx.class})
- 一类是由spring内置的
比如在用@PathVariable Long id时,如果id无法转换为long就会抛出一个typemis什么spring内置exception,这个实在很早很早还没有进入你的controller时就产生了,这时他调用的是在xxx-servlet.xml文件中定义的exception handler来处理。
<!-- Mapping exception to the handler view --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- to /commons/error.jsp --> <property name="defaultErrorView" value="/commons/error"/> <property name="exceptionMappings"> <props> </props> </property> </bean>
这里的exceptionMappings是能让你对应不同的exception,来进行处理的。不过具体代码还没有仔细看,spring自带的好像写得也不是很详细了
只好自己研究了。呵呵
1 楼
bfttt999
2011-09-29
LZ,看到你的这句话:
可惜在springmvc中,只有一个@initbinder,他如同一个全局函数,与WebDataBinder绑定。不过他也有个毛病,就是在我的requestMapping方法参数中必须添加一个entity类型的,才会触发initbinder的函数。
我也正被这个问题困扰,@InitBinder 死活不能触发,查了好多资料都没有说明这个情况,正在怀疑是否Spring3.05的bug。
请教一下,该如何正确写 requestMapping方法参数 才能触发,能给个实例吗?谢谢!
可惜在springmvc中,只有一个@initbinder,他如同一个全局函数,与WebDataBinder绑定。不过他也有个毛病,就是在我的requestMapping方法参数中必须添加一个entity类型的,才会触发initbinder的函数。
我也正被这个问题困扰,@InitBinder 死活不能触发,查了好多资料都没有说明这个情况,正在怀疑是否Spring3.05的bug。
请教一下,该如何正确写 requestMapping方法参数 才能触发,能给个实例吗?谢谢!