如何添加JSON支持与XML已经工作?
JSON支持如何添加到dispatch-servlet.xml(XML正在工作没有问题)?
注释文本只是失败的尝试......如何添加JSON支持与XML已经工作?
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.example"/>
<oxm:jaxb2-marshaller id="marshaller" contextPath="com.example.domain"/>
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<beans:constructor-arg ref="marshaller"/>
</beans:bean>
<!-- <beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<beans:constructor-arg ref="marshaller"/>
</beans:bean> -->
</beans:list>
</beans:property>
</beans:bean>
<beans:bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<beans:bean name="note" class="org.springframework.web.servlet.view.xml.MarshallingView">
<beans:constructor-arg ref="marshaller"/>
</beans:bean>
<!-- <beans:bean name="note" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<beans:constructor-arg ref="marshaller"/>
</beans:bean> -->
<!-- InternalResourceViewResolver should be the last sice it always returns/resolves a view -->
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></beans:property>
<beans:property name="prefix" value="/WEB-INF/jsp/"></beans:property>
<beans:property name="suffix" value=".jsp"></beans:property>
</beans:bean>
</beans:beans>
其他的解决方案,用于: method=RequestMethod.POST, headers = "content-type=application/json"
你仍然需要:
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter>
<beans:property name="messageConverters">
<beans:list>
<beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</beans:list>
</beans:property>
</beans:bean>
要正确绑定的Java对象@RequestBody。
尝试这样:
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper">
<ref bean="JacksonObjectMapper" />
</property>
</bean>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="objectMapper">
<ref bean="JacksonObjectMapper" />
</property>
</bean>
<bean id="JacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
它不会让你将使用JAXB编组实例杰克逊感(我不认为)。
使用ContentNegotiatingViewResolver的例子:
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="objectMapper">
<ref bean="JacksonObjectMapper" />
</property>
</bean>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<ref bean="Jaxb2Marshaller" />
</property>
</bean>
</list>
</property>
<property name="favorPathExtension" value="false" />
<property name="favorParameter" value="true" />
<property name="useNotAcceptableStatusCode" value="true" />
</bean>
你明白了,但如果我离开XML豆出来的作品。你能否建议如何结合XML使用它,并为BeanNameViewResolver使用相同的“
你在和哪个版本的Spring合作?以及你如何/在哪里使用笔记? – AHungerArtist 2010-11-18 20:55:54
如果您可以使用ContentNegotiatingViewResolver,那么弹出并使用它似乎很容易。 – AHungerArtist 2010-11-18 21:11:52
我发现在这里,你可能需要更新您的杰克逊 - 翔升罐子版http://forum.springsource.org/showthread.php?t=83954
试着看那个,看是否将其升级解决了这个问题。
哇,有什么用下来票?至少让我指点一下...... – Solata 2010-11-18 17:31:14
不是一个downvoter,但我会想象它是不是告诉我们*失败的尝试失败和错误是什么:) – Affe 2010-11-18 18:00:02
好吧,我同意,我可以去更多在详细... AHungerArtist的答案帮助:) – Solata 2010-11-18 20:37:22