我開發了一個Web應用程序,其中表單驗證異常應該由@ExceptionHandler(需要靈活)和SimpleMappingExceptionResolver處理一般系統異常如電子郵件通知等)。Spring異常處理 - 如何同時使用ExceptionResolver和@ExceptionHandler
問題是,如果我同時使用,爲@ExceptionHandler映射的異常不會到達@ExceptionHandler,而是由ExceptionResolver作爲defaultError獲取。
任何想法如何使它一起工作?
@ExceptionHandler(ValidatorException.class)
public String handleFormException(ValidatorException ex, ActionRequest actionRequest) {
logger.error(ex.getMessage());
//TODO make conditions
return "mainOrderForm";
}
@ActionMapping(params = "action=addDocOrder")
public void addDocOrder(@ModelAttribute("order") CstOrderBeanImpl orderBean, BindingResult result, ActionRequest actionRequest, ActionResponse response)
throws PortalException, SystemException, ValidatorException {
logger.info("Adding Form Order");
Calendar cal = TimeUtils.getEuDeadLine(orderBean);
orderBean.setDeadLine(cal.getTime());
ValidatorException ve = validateService.validate(orderBean, result, actionRequest, validator);
if(ve != null)
throw ve;
在DispatcherPortlet時,有
catch (Exception ex) {
// Trigger after-completion for thrown exception.
triggerAfterActionCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
這對於攔截檢查,但不存在,所以它的默認...
我只想指出,它是Portlet環境,通常通過參數驅動的「視圖」更少......
嗨heikkim,這正是我最終完成的,我沒有調用處理程序的方法,但我只是檢查這個(exc instanceof ValidatorException),我做了我所需要的。但是,你的建議更有意義,當邏輯處於處理程序時,它更加透明,而不是exceptionResolver – lisak 2010-11-25 14:14:07