MaxUploadSizeExceededException ruft die Ausnahmebehandlungsmethode in Spring nicht auf

Ich benutze Spring 3.2.0. Gemäßdiese antworte, ich habe die gleiche Methode in meinem kommentierten Controller, der das implementiertHandlerExceptionResolver Schnittstelle wie,

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");
}

und die Federkonfiguration beinhaltet,

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

Wenn die Dateigröße überschritten wird, sollte die vorhergehende Methode aufgerufen werden und die Ausnahme automatisch behandelt werden, dies geschieht jedoch überhaupt nicht. Die MethoderesolveException() wird nie aufgerufen, obwohl die Ausnahme auftritt. Wie kann mit dieser Ausnahme umgegangen werden? Vermisse ich etwas?

Das Gleiche ist auch angegebenHier. Ich bin nicht sicher, warum es in meinem Fall nicht funktioniert.

Ich habe das ausprobiertfolgenden Ansatz mit@ControllerAdvice aber es hat auch nicht funktioniert.

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);
    }
}

Ich habe auch versucht, das Verbose zu setzen -Exception.

@ExceptionHandler(value={Exception.class})

Die MethodeResponseEntity() wird auf keinen Fall aufgerufen.

Im Allgemeinen möchte ich diese Ausnahme nach Möglichkeit pro Controller-Basis (Controller-Ebene) behandeln. Für dieses@ExceptionHandler Die mit Anmerkungen versehene Methode sollte nur für diesen bestimmten Controller aktiv sein, nicht global für die gesamte Anwendung, da sich in meiner Anwendung nur wenige Webseiten befinden, die das Hochladen von Dateien verwalten. Wenn diese Ausnahme verursacht wird, möchte ich nur eine benutzerfreundliche Fehlermeldung auf der aktuellen Seite anzeigen und nicht auf die in der konfigurierte Fehlerseite umleitenweb.xml Datei. Wenn dies nicht einmal möglich ist, sollte diese Ausnahme trotzdem ohne benutzerdefinierte Anforderungen behandelt werden, die ich gerade geäußert habe.

Keiner der Ansätze hat bei mir funktioniert. Ich konnte nichts mehr über die Behandlung dieser Ausnahme finden. Benötigt es zusätzliche Konfiguration irgendwo in XML-Dateien oder auf andere Weise?

Was ich nach dem Auslösen der Ausnahme bekomme, ist im Folgenden zu sehenSchnappschuss.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage