我正在使用Spring 3创建一些ReST服务。在POSTing XML时,Spring处理String字段但不转换Date字段。这是一个例子:
@XmlRootElement(name = "TestObj")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestObj {
@XmlElement(type = Date.class, name = "Birthdate")
@XmlJavaTypeAdapter(BirthdateXmlAdapter.class)
private Date birthdate;
@XmlElement(type = String.class, name = "Name")
private String name;
// getters and setters ...
}
我想也许XmlAdapter是必需的,并根据我需要的日期格式创建一个来编组/取消编组。调用BirthdateXmlAdapter但传递空值,当然将birthdate字段设置为null。
@RequestMapping(value="/test", method=RequestMethod.POST)
public TestObj test(@RequestBody TestObj testObj) {
logger.debug(testObj.toString());
return testObj;
}
这里非常简单的用例。我使用RestClient来POST XML并在我的TestObj中正确设置“name”属性,但是birthdate为null。
答案 0 :(得分:1)
如果您注释如下:
import java.util.Date;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "TestObj")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestObj {
@XmlElement(name = "Birthdate")
@XmlSchemaType(name="date")
private Date birthdate;
@XmlElement(name = "Name")
private String name;
}
您可以生成/使用以下XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TestObj>
<Birthdate>2010-09-22</Birthdate>
<Name>Jane Doe</Name>
</TestObj>