2011-12-28 9 views
0

アクションフェーズで例外がスローされた後にレンダーフェーズをヒットしようとしたときに、リクエストから例外をクリアすることができるかどうかを知りたいと思います。SpringポータルMVCクリアアクション例外レンダリングフェーズに行く

あなたはDispatchPortlet.class(春提供されるクラス)の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); 
    } 
} 

あなたは例外がパラメータマップに入れ、「はdoesnのされることをここで見ることができますそれを取り除く方法はないようです。

私がしたいのは、もともとException(私が正常に行っていること)をキャッチし、「エラーページ」(私が正常に行っていること)を表示し、そのエラーページにボタンを表示します。再度 "Render Phase"ページを表示して、自分の行動を試すことができるようにしてください。

私はフィルター、インターセプター、新しいコントローラーを作成してパラメーターをクリアしようとしましたが、ParameterMapがUnmodifiableCollectionであるようです。

どのような考えですか?

答えて

0

私は実際にレンダリング位相フィルタで次の手順を実行して、これを理解することができた:

session.setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, null) 
0

あなたはsetForwardActionException(false)であなたのorg.springframework.web.portlet.DispatcherPortletを設定することができます。これにより、SpringがレンダリングパラメータまたはセッションにExceptionの詳細を追加するのを防ぎます。

関連する問題