ResponseBodyを使用してjsonとxmlの応答を返そうとしていますが、xmlでは正常に機能しますが、jsonは返されません。xmlのリクエストURIは「../home.xml」で、jsonのリクエストはコントローラーメソッドの「../home.json」です。
@RequestMapping("home.*")
public @ResponseBody Message homeOther(HttpServletRequest request, HttpServletResponse response, ModelMap mv){
Message msg = new Message();
msg.setDetail("I am here at home");
msg.setUploadDate(new Date());
mv.addAttribute("message", msg);
return msg;
}
そして、これがディスパッチャサーブレットです。
<context:component-scan base-package="com.ym"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
</bean>
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/views"/>
</bean>
<!-- Simple ViewResolver for Velocity, appending ".vm" to logical view names -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="order" value="2" />
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".vm"/>
<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>
<!-- if you want to use the Spring Velocity macros, set this property to true -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="contentType" value="text/html; charset=UTF-8" />
</bean>
<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller" />
<bean id="xmlView" class="org.springframework.web.servlet.view.xml.MarshallingView"
>
<constructor-arg ref="xstreamMarshaller" />
</bean>
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
<ref bean="marshallingHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
<bean id="marshallingHttpMessageConverter"
class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="xstreamMarshaller"/>
<property name="unmarshaller" ref="xstreamMarshaller"/>
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
<ref bean="xmlView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
XML応答は次のとおりです。
<com.ym.mongodb.model.Message>
<messageId>0</messageId>
<detail>I am here at home</detail>
<uploadDate>2013-03-09 09:56:46.606 UTC</uploadDate>
</com.ym.mongodb.model.Message>
私の問題は次のとおりです。1。構成で何が摩耗していますか?なぜjson応答を返さないのですか?2.なぜそれが返すxmlは、メッセージの完全修飾名を表示しますか?Spring3.1を使用しています。
編集:興味深いことに、リクエストタイプが適切に設定されている場合、jsonnxmlが正しく作成されます。しかし、それでも2番目の問題は存在します。