java - 如何使用 spring mvc 使用 Jaxb 从 Http Post Rest Web 服务中解码 xml?

标签 java xml spring spring-mvc jaxb

我的 Spring MVC Web 服务代码如下。

模型类

@XmlRootElement(name="secretData")
public class VData {


        private long lKId;



        @XmlElement(name="kId")
        public long getlKId() {
            return lKId;
        }


        public void setlKId(long lKId) {
            this.lKId = lKId;
        }       
    }

Controller 方法

@RequestMapping(value = "/vendor", method = RequestMethod.POST)
        public String addVendor(@RequestBody VData vData) {

            /*Checking recieved value*/
            System.out.println(vData.getlKId());//**Returning 0 value **
            return "Success";
        }

Web 服务的 Xml 请求正文

<secretData>
    <kId>1</kId>
</secretData>

我在 lKId 中得到“0”值。我哪里做错了。请提供使用 @XmlElement(name="kId") 注释将 xml 元素绑定(bind)到对象成员的正确方法。

最佳答案

为了在 Spring Web MVC 中启用 OXM(对象到 XML 映射),Spring 需要一个可以从 XML 读取/写入的 HttpMessageConverter。 Spring 中有多种使用 Jackson、XStream、JAXB 等的实现方式......

当Spring在类路径中检测到这些库之一时,它应该自动添加一个HttpMessageConverter。您的类路径上有 JAXB 库吗?

您还可以手动将 Jaxb2RootElementHttpMessageConverter 注册为 bean。通过 JavaConfig,这看起来像:

@Bean
public HttpMessageConverter oxmHttpMessageConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}

关于java - 如何使用 spring mvc 使用 Jaxb 从 Http Post Rest Web 服务中解码 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44556382/

相关文章:

java - 获取重复的数组输出 - java

java - android studio AsyncTask 无意且 context.finish 崩溃

java - GWT 编译器选项,用于使用 gwt maven 插件查看自定义生成器生成的文件

jquery - 使用 jquery 按索引删除 XML 节点并写回文件

xml - REST - 何时使用 400 ("Bad Request")

java - 使用/将 XML 文件转换为 Spring bean 定义

java - zip4j 生成所有文件大小 = 0 的 zip

java - 在没有根架构的情况下验证 XML

java - Spring Batch JdbcPagingItemReader 似乎没有执行所有项目

java - 如何使用具有不同验证注释的相同表单 DTO?如何避免双重代码?