MaxUploadSizeExceededException nie wywołuje metody obsługi wyjątków na wiosnę

Używam Spring 3.2.0. Wedługto odpowiedź, mam tę samą metodę w moim adnotowanym kontrolerze, który implementujeHandlerExceptionResolver interfejs, taki jak,

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) {

    Map<String, Object> model = new HashMap<String, Object>(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");
}

a konfiguracja Spring zawiera,

<bean id="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize">
        <value>10000</value>
    </property>
</bean>

Kiedy rozmiar pliku przekracza, należy wywołać poprzednią metodę i automatycznie obsłużyć wyjątek, ale w ogóle się nie zdarza. MetodaresolveException() nigdy nie jest wywoływany, nawet jeśli wystąpi wyjątek. Jak radzić sobie z tym wyjątkiem? Czy czegoś mi brakuje?

To samo jest również określonetutaj. Nie wiem, dlaczego nie działa w moim przypadku.

Próbowałemnastępujące podejście z@ControllerAdvice ale to też nie zadziałało.

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<Object> handleConflict(RuntimeException ex, WebRequest request) {
        String bodyOfResponse = "This should be application specific";
        return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.CONFLICT, request);
    }
}

Próbowałem też umieścić gadatliwy -Exception.

@ExceptionHandler(value={Exception.class})

MetodaResponseEntity() nigdy nie jest wywoływany.

Ogólnie, jeśli to możliwe, chcę obsługiwać ten wyjątek na podstawie kontrolera (poziom kontrolera). Dla tego@ExceptionHandler Metoda z adnotacjami powinna być aktywna tylko dla tego konkretnego kontrolera, a nie globalnie dla całej aplikacji, ponieważ w mojej aplikacji jest tylko kilka stron internetowych, które obsługują przesyłanie plików. Gdy ten wyjątek jest spowodowany, chcę po prostu wyświetlić przyjazny komunikat o błędzie na bieżącej stronie i nie przekierowywać do strony błędów skonfigurowanej wweb.xml plik. Jeśli nie jest to nawet możliwe, to wyjątek ten i tak należy traktować bez żadnych niestandardowych wymagań, które właśnie wyraziłem.

Żadne z podejść nie zadziałało dla mnie. Nie mogłem znaleźć nic więcej na temat obsługi tego wyjątku. Czy wymaga to dodatkowej konfiguracji w plikach XML lub w inny sposób?

To, co otrzymuję po zgłoszeniu wyjątku, może być widoczne poniżejsnap shot.

questionAnswers(6)

yourAnswerToTheQuestion