Ich habe die folgende Bilddownload-Methode in meinem Controller (Spring 4.1):
%Vor% Die folgende ControllerAdvice
-Methode sollte eine nicht existierende Datei behandeln und eine json-Fehlerantwort zurückgeben:
Mein JUnit-Test funktioniert einwandfrei
( BEARBEITEN Dies liegt an der Erweiterung .bla: Dies funktioniert auch auf dem Anwendungsserver):
%Vor%und gibt die folgende Ausgabe:
%Vor%Allerdings bekomme ich auf meinem Appserver folgende Fehlermeldung, wenn ich versuche, ein nicht vorhandenes Image herunterzuladen:
( BEARBEITEN Dies liegt an der Erweiterung .jpg: Dies schlägt auch beim JUnit-Test mit Erweiterung .jpg fehl):
ERROR org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: public java.util.Map<java.lang.String, java.lang.String> nl.krocket.ocr.web.controller.ExceptionController.handleResourceNotFoundException(nl.krocket.ocr.web.backing.ResourceNotFoundException)
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
Ich habe messageconverter in meiner mvc-Konfiguration wie folgt konfiguriert:
%Vor%Was fehlt mir? Und warum funktioniert der JUnit-Test?
Sie müssen entscheiden, wie der Medientyp der Antwort von Spring bestimmt werden soll. Das kann auf verschiedene Arten geschehen:
Spring betrachtet standardmäßig die Erweiterung und nicht den Header Accept
. Dieses Verhalten kann geändert werden, wenn Sie eine @Configuration
-Klasse implementieren, die WebMvcConfigurerAdapter
erweitert. Dort können Sie configureContentNegotiation(ContentNegotiationConfigurer configurer)
überschreiben und den Konfigurator nach Ihren Bedürfnissen konfigurieren, z. durch Aufruf von
Wenn Sie beide auf false
setzen, sucht Spring den Header Accept
. Da Ihr Client Accept: image/*,application/json
sagen und beide behandeln kann, sollte Spring in der Lage sein, entweder das Bild oder den Fehler JSON zurückzugeben.
Siehe dieses Frühjahrs-Tutorial zur Inhaltsverhandlung für weitere Informationen und Beispiele.
Tags und Links java spring spring-mvc junit