Я разработал веб-приложение, в котором исключения проверки формы должны обрабатываться @ExceptionHandler (должен быть гибким), а общие системные исключения - SimpleMappingExceptionResolver (такие вещи, как уведомление по электронной почте и т. Д.).
Проблема в том, что, если я использую оба, исключения, которые сопоставлены для @ExceptionHandler, не попадают в @ExceptionHandler, но захватываются ExceptionResolver как defaultError.
Есть идеи, что нужно сделать, чтобы это работало вместе?
@ExceptionHandler(ValidatorException.class)
public String handleFormException(ValidatorException ex, ActionRequest actionRequest) {
logger.error(ex.getMessage());
//TODO make conditions
return "mainOrderForm";
}
@ActionMapping(params = "action=addDocOrder")
public void addDocOrder(@ModelAttribute("order") CstOrderBeanImpl orderBean,
BindingResult result, ActionRequest actionRequest, ActionResponse response)
throws PortalException, SystemException, ValidatorException {
logger.info("Adding Form Order");
Calendar cal = TimeUtils.getEuDeadLine(orderBean);
orderBean.setDeadLine(cal.getTime());
ValidatorException ve = validateService.validate(orderBean, result, actionRequest, validator);
if (ve != null) throw ve;
(...)
В DispatcherPortlet есть
catch (Exception ex) {
// Trigger after-completion for thrown exception.
triggerAfterActionCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
(...)
Который проверяет наличие перехватчиков, но ни один не существует, поэтому он выполняет настройку по умолчанию ...
Я просто отмечаю, что это среда портлетов, обычно меньше "просмотров" ... управляемых параметрами ..