2012-07-27 95 views
0

如下我已经配置春天来解决我们的API XML和JSON响应:春显示应用程序/ * + XML而不是应用程序/ XML

<!-- oxm integration --> 
    <bean id="objectXmlMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller" /> 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
     <property name="ignoreAcceptHeader" value="false" /> 
      <property name="favorPathExtension" value="true" /> 
     <property name="mediaTypes"> 
      <map> 
       <entry key="xml" value="application/xml" /> 
       <entry key="json" value="application/json" /> 
      </map> 
     </property> 
     <property name="defaultViews"> 
      <list> 
       <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
       <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> 
        <property name="marshaller" ref="objectXmlMarshaller" /> 
       </bean> 
      </list> 
     </property> 
    </bean> 

不幸的是,春天返回与应用程序/ * + xml的XML响应。看起来chrome不能打开这样的扩展并将它发送到窗口来打开它们(所以不是在浏览器上看到响应,而是通过窗口打开它)。

有谁知道它为什么返回应用程序/ * + XML而不是配置的应用程序/ XML?

如果不是,任何人都知道如何强制铬显示它?

谢谢!

回答

0

我发现解决这个唯一的办法是直接映射与所需的控制器:

@RequestMapping(produces = { "application/json", "application/xml" }) 

太糟糕了,春天不会让你有一个全球性的定义。