MaxUploadSizeExceededException не вызывает метод обработки исключений в Spring
м с использованием Spring 3.2.0. В соответствии сэтот ответ, у меня есть тот же метод в моем аннотированном контроллере, который реализуетHandlerExceptionResolver
интерфейс, такой как,
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) {
Map model = new HashMap(0);
if (exception instanceof MaxUploadSizeExceededException) {
model.put("msg", exception.toString());
model.put("status", "-1");
} else {
model.put("msg", "Unexpected error : " + exception.toString());
model.put("status", "-1");
}
return new ModelAndView("admin_side/ProductImage");
}
и конфигурация Spring включает в себя,
10000
Когда размер файла превышает, предыдущий метод должен быть вызван, и он должен автоматически обработать исключение, но это невообще не бывает. МетодresolveException()
никогда не вызывается, хотя возникает исключение. Как справиться с этим исключением? Я что-то пропустил?
Тоже самое указаноВот, Я'я не уверен, почему это не такне работает в моем случае.
Я попробовалследующий подход с@ControllerAdvice
но это нетоже не работает.
package exceptionhandler;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public final class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = {MaxUploadSizeExceededException.class})
protected ResponseEntity handleConflict(RuntimeException ex, WebRequest request) {
String bodyOfResponse = "This should be application specific";
return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.CONFLICT, request);
}
}
Я также попытался поставить подробный -.Exception
@ExceptionHandler(value={Exception.class})
МетодResponseEntity()
никогда не вызывается в любом случае.
В общем, я хочу обработать это исключение для каждой базы контроллера (уровень контроллера), если это возможно. Для этого один@ExceptionHandler
аннотированный метод должен быть активным только для этого конкретного контроллера, а не глобально для всего приложения, поскольку в моем приложении есть только несколько веб-страниц, которые обрабатывают загрузку файлов. Когда это исключение вызвано, я просто хочу показать удобное сообщение об ошибке на текущей странице, а не перенаправлять на страницу ошибки, настроенную вweb.xml
файл. Если это даже невозможно, то это исключение должно быть обработано в любом случае без каких-либо специальных требований, которые я только что высказал.
Ни один из подходов не работал для меня. Больше ничего об обработке этого исключения я не смог найти. Требуется ли дополнительная настройка где-нибудь в XML-файлах или нет?
Что я'м после получения исключения может быть видно в следующемСнимок.