我的 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/