Я хотел бы знать, возможно ли удалить исключение из запроса при попытке перейти к фазе рендеринга после того, как фаза действия вызвала исключение.
Если вы посмотрите на этот фрагмент кода из метода 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 является немодифицируемой коллекцией.
Есть предположения?