2011-12-28 21 views
0

我想知道在操作階段拋出異常之後嘗試點擊渲染階段時是否可以清除請求中的異常。Spring Portal MVC清除操作異常進入渲染階段

如果你看一下這個代碼片段從DispatchPortlet.class(一個Spring提供的類)的doRenderService方法:

PortletSession session = request.getPortletSession(false); 
if (session != null) { 
    if (request.getParameter(ACTION_EXCEPTION_RENDER_PARAMETER) != null) { 
     Exception ex = (Exception)   
     session.getAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE); 
     if (ex != null) { 
      logger.debug("Render phase found exception caught during action phase - rethrowing it"); 
      throw ex; 
     } 
    } 
    else { 
     session.removeAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE); 
    } 
} 

你可以在這裏看到的是一個異常被放入參數圖,有沒有按」似乎有什麼辦法可以清除它。

我想要做的是最初捕獲異常(我成功做了什麼),顯示一個「錯誤頁面」(我成功做了什麼),然後在該錯誤頁面上顯示一個按鈕,允許用戶再次調出「渲染階段」頁面,以便他/她可以再次嘗試他們的操作。

我試着創建一個過濾器,攔截器,新的控制器來清除參數,但它似乎是ParameterMap是一個UnmodifiableCollection。

有什麼想法?

回答

0

我其實能夠做摸不着頭腦中渲染相位濾波器如下:

session.setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, null) 
0

您可以用org.springframework.web.portlet.DispatcherPortlet配置setForwardActionException(false)。這可以防止Spring在渲染參數或會話中添加Exception細節。