Spring显示应用程序/ * + xml而不是application / xml

时间:2012-07-27 17:23:54

标签: xml spring google-chrome spring-mvc

我已经配置spring来解决我们的API的xml和json响应,如下所示:

<!-- 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>

不幸的是,spring使用application / * + xml返回xml响应。似乎chrome无法打开这些扩展并将其发送到Windows以打开它们(因此,不必在浏览器上看到响应,我必须通过Windows打开它。)

有谁知道为什么它会返回application / * + xml而不是配置的application / xml?

如果没有,有人知道如何强制显示它吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到解决这个问题的唯一方法就是直接用控制器映射控制器:

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

太糟糕的弹簧不允许你有全局定义。