Mam problem mapowanie JSON Posta do konkretnego obiektu Java, aby go zapisać poprzez HibernateWiosna MVC: @ResponseBody, 415 nieobsługiwany Typ nośnika
nagłówki wywołania AJAX są prawidłowo ustawione ...
Accept application/json
Content-Type application/json; charset=UTF-8
i HTTP POST Metoda jest
Nadchodzi moja konfiguracja ...
My Wiosna MVC mapowanie funkcji wygląda następująco
@RequestMapping(value = {"/save.json"},method = RequestMethod.POST)
public ModelMap save(@RequestBody Seizure seizureObj,Model model) {
...
}
w moim pojemnika xml Mam ContentNegotiatingViewResolver jak ten
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/assets/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false" />
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
</list>
</property>
</bean>
w moim pojemnika xml część dla Jacksona
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapterConfigurer"
init-method="init">
<property name="messageConverters">
<list>
<bean id="marshallingHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
>
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
</list>
</property>
</bean>
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
Mam
- Jackson-core-ASL-1.8.5
- Jackson-mapper-npm-1.8.5
w moim/lib folderu
i Jackson pracuje dla prostego przypadku tak
public class Simple {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
@RequestMapping(value = {"/saveSimple.json"},method = RequestMethod.POST)
public ModelMap save(@RequestBody Simple simple,Model model) {
...
}
kiedy przetestować go z curl
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":1}' http://<URL>/saveSimple.json
Żadnych problemów, ale gdybym go przetestować z obiektem hibernacji pojawia się komunikat
415 Unsupported Media Type
żadnych pomysłów.
To całkowicie uratowało mój dzień ... tydzień. Naprawdę przesłanie komunikatu o błędzie! Jak to jest możliwe? –
hehe Mam nadzieję, że wznowiłeś;) –
+1 - niesamowita sztuczka debugowania. – Martin