Java 如何使用SpringMVC使用Jaxb从Http Post Rest Web服务中解组xml?
我的SpringMVCWeb服务代码如下 模范班Java 如何使用SpringMVC使用Jaxb从Http Post Rest Web服务中解组xml?,java,xml,spring,spring-mvc,jaxb,Java,Xml,Spring,Spring Mvc,Jaxb,我的SpringMVCWeb服务代码如下 模范班 @XmlRootElement(name="secretData") public class VData { private long lKId; @XmlElement(name="kId") public long getlKId() { return lKId; } public void setlKId(long lKI
@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;
}
}
控制器方法
@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>
1.
我得到lKId中的“0”值。我哪里做错了。请提供使用@xmlement(name=“kId”)注释将xml元素绑定到对象成员的正确方法。在
@RequestMapping
中添加consumes=MediaType.APPLICATION\u xml\u VALUE
以告知控制器此方法将仅使用xml
@RequestMapping(value = "/vendor", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE)
public String addVendor(@RequestBody VData vData) {
/*Checking recieved value*/
System.out.println(vData.getlKId());//**Returning 0 value **
return "Success";
}
当您通过http发布xml时,设置headerContent type:application/xml
要在SpringWebMVC中启用OXM(对象到xml的映射),Spring需要一个HttpMessageConverter,它可以读取/写入xml。Spring中有几个使用Jackson、XStream、JAXB等的实现
当Spring在类路径中检测到这些库之一时,它应该自动添加一个HttpMessageConverter。类路径上有JAXB库吗
您还可以手动将Jaxb2RootElementHttpMessageConverter注册为bean。通过JavaConfig,这看起来像:
@Bean
public HttpMessageConverter oxmHttpMessageConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}
您必须在setter而不是getter上添加@xmlement注释。
@XmlAttribute注释必须放在getter上。仍然不起作用。我认为必须进行解组。我不知道如何做。您遇到了什么错误?在类路径中需要有Jackson数据绑定JAR