我在使用Spring 3和MVC构建的简单Web服务中遇到了一个奇怪的问题。 Web服务工作正常,我就像我想要的那样恢复XML,但是,所有Joda日期/时间类型的所有值都是空的。
所以我有一个像这样的UserDTO:
@XmlRootElement(name = "user")
public class UserDTO
{
private String firstname;
private String lastname;
private LocalDate birthdate;
...
我有一个控制器,如:
@Controller
public class UserController
{
@RequestMapping(value = "/user", method = RequestMethod.GET)
@ResponseBody
public UserDTO getUser()
{
UserDTO userDTO = new UserDTO();
userDTO.setFirstname("Foo");
userDTO.setLastname("Bar");
userDTO.setBirthdate(new LocalDate(1980,1,1));
return userDTO;
}
}
我得到以下XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<firstname>Foo</firstname>
<lastname>Bar</lastname>
<birthdate />
</user>
如果我将'Accept'标题更改为application / json,我会得到日期值
{“userVO”:{“名字”,“姓氏”:“姓氏”,“生日”:[1978,12,5]}}
关于这可能是什么的任何想法?
答案 0 :(得分:2)
要回答我自己的问题......以下链接让我走上了正确的道路:http://bdoughan.blogspot.com/2011/05/jaxb-and-joda-time-dates-and-times.html
基本上你必须为每种类型创建一个XmlAdapter。以下是链接中的示例:
package blog.jodatime;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.joda.time.DateTime;
public class DateTimeAdapter
extends XmlAdapter<String, DateTime>{
public DateTime unmarshal(String v) throws Exception {
return new DateTime(v);
}
public String marshal(DateTime v) throws Exception {
return v.toString();
}
}