Мне действительно все равно, как насчет распорок обрабатывает исключение. Используя старый сырой код из 1.2 обычно при переопределении RequestProcesor
, я, вероятно, должен заменить два метода - process и processException
. Первым делом рад поймать исключение из запроса после processValidation
. Фрагмент кода может выглядеть как
Exception exception = null;
if (needValidation)
try {
if (! processValidate(request, response, form, mapping)) {
return;
}
exception = (Exception)request.getAttribute(Globals.EXCEPTION_KEY);
} catch (InvalidCancelException ex) {
exception = ex;
}
ActionForward forward;
// Check out if exception occurred
if (exception != null){
forward = processException(request, response, exception, form, mapping);
Второй вариант довольно прост, если вы настроили ошибки вперед. Пересылка ошибок обычно является одним из глобальных пересылок, которые легко найти из сопоставления. Как только он найден, ему нравится отображать ваше сообщение об ошибке на странице. Я думаю, что этого будет достаточно для обработки исключения
exception.printStackTrace();
log.error(exception);
request.setAttribute("error", exception.getMessage());
return mapping.findForward("error");
Это было сделано, потому что метод validate из ActionForm
или ValidatorForm
не выдает никаких исключений, и я не мог корректно переопределить этот метод, не выбрасывая некоторые. Однажды брошенный, кто будет заботиться об этом ?!