Spring Portal MVC Clear Action Exception переходит к этапу рендеринга

Я хотел бы знать, возможно ли удалить исключение из запроса при попытке перейти к фазе рендеринга после того, как фаза действия вызвала исключение.

Если вы посмотрите на этот фрагмент кода из метода doRenderService DispatchPortlet.class (предоставленный Spring класс):

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 является немодифицируемой коллекцией.

Есть предположения?


person El Guapo    schedule 28.12.2011    source источник


Ответы (2)


На самом деле я смог понять это, выполнив следующие действия в фильтре фазы рендеринга:

session.setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, null)
person El Guapo    schedule 29.12.2011

Вы можете настроить org.springframework.web.portlet.DispatcherPortlet с помощью setForwardActionException(false). Это предотвращает добавление Spring сведений об исключении в параметры рендеринга или сеанс.

person Andre    schedule 24.10.2013