HttpMediaTypeNotAcceptableException mit Feder 3.1.2 und Jackson 1.9.11
~R
Ich versuche zu tun, Spring MVC REST JSON-Kanal mit automatischer Umstellung auf JSON mit Jackson. Obwohl ich mache alles so wie empfohlen, in anderen StackOverflow-Fragen, ich bin immer HttpMediaTypeNotAcceptableException
und meine Bohnen/Listen werden nicht in JSON. Ich bin mit den code auf Steg.
Habe ich ja befolgt die Anweisung von UTF-8-Codierung problem in Spring MVC, Spring 3.0 machen JSON-response mit jackson message converter und Jackson Anmerkungen ignoriert im Frühjahr, aber keiner von Ihnen ermöglicht es mir, zu senden, weder die Bohne, noch eine List<String>
. Beide geben Sie den HTTP-status 406. Nur die Methode der Rückgabe-String erfolgreich mit HTTP 200.
Meine Methode ist:
@RequestMapping(value = "/list", produces = "text/plain; charset=utf-8")
public @ResponseBody List<String> getList() {
return createList();
}
Frühjahr Datei:
<context:component-scan base-package="de.myapp.rest" />
<context:annotation-config />
<mvc:annotation-driven />
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter" />
</list>
</property>
</bean>
Hinzufügen dieser Abschnitt hilft auch nicht:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
Den Anfrage-HTTP-header wird erzeugt durch jQuery und sieht so aus:
Akzeptieren application/json, text/javascript, /; q=0.01
Accept-Encoding gzip, deflate
Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101
Firefox/18.0
Allerdings bekomme ich HTTP 406 mit HTML-Fehlermeldung angezeigt, und die folgenden Zeilen in der log-Datei:
Auflösen Ausnahme von handler [public de.myapp.rest.TestBean
de.myapp.rest.Test.getList()]:
org.springframework.web.HttpMediaTypeNotAcceptableException: Konnte nicht
annehmbare Darstellung
Die Frage ist also, was fehlt mir hier? Warum der jackson-Konverter ist nicht registriert/wie kann ich Debuggen? Ich bin mit den code per jetty:run
. Aber es sollte nicht Materie, die seit dem Frühjahr ist application-server-unabhängig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem
@RequestMapping
Sie habenproduces = "text/plain"
, aber Ihre Anfrage-header sagtAccept application/json, text/javascript
. Es ist kein Spiel.Entweder
produces="application/json"
oder nicht verwendenproduces
überhaupt. Es ist der wichtigste use case ist mehr als eine Methode für den gleichen URL, die jeweils produzieren Ausgabe in einem anderen format (JSP, JSON, XML ...).