【问题标题】:Spring MVC: Adding JAXB to the classpath so that it automatically serializes XMLSpring MVC:将 JAXB 添加到类路径以便它自动序列化 XML
【发布时间】:2011-04-11 19:08:53
【问题描述】:

根据 Spring MVC 文档,<mvc:annotation-driven/> 如果 Jackson 在类路径中,则配置对 JSON 的支持,如果在类路径中存在 JAXB,则配置对 XML 的支持。只需将 Jackson 依赖项添加到我的 pom.xml,我就能获得 JSON 支持! (见:Ajax Simplification in Spring 3.0

但是,在尝试使用接受标头“application/xml”访问同一服务后,我收到 406 Not Acceptable 响应。在类路径中获取 JAXB 的最简单方法是什么?启用对 XML MarshallingHttpMessageConverter 的支持需要什么?

更新

看看 AnnotationDrivenBeanDefinitionParser,我可以看到“jaxb2Present”的定义。我在第 179 行附近设置了一个断点,以查看 Jaxb2RootElementHttpMessageConverter 是否确实像 MappingJacksonHttpMessageConverter 一样被注册。这不是……

将 JAXB 添加到类路径以使其自动序列化我的 XML 请求的最简单方法是什么?

【问题讨论】:

    标签: spring maven-2 spring-mvc xml-serialization jaxb


    【解决方案1】:

    如果您使用的是 Java 6,则 JAXB 已经在类路径中。如果您使用的是 Java 5,则需要自己添加 reference implementation

    如果你使用 Maven,你可以添加到你的 pom.xml:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2</version>
    </dependency>
    

    【讨论】:

    【解决方案2】:

    它应该工作。确保返回的对象具有 JAXB 要求的 @XmlRootElement 注释。

    【讨论】:

    • 我也遇到了同样的问题,而且不是这样。我对此还有另一个问题,但是指定了我的所有配置和类 (stackoverflow.com/questions/55381597/…),一切似乎都正确.. Spring MVC 不能简单地使用 XML。
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多