xml响应中LocalDate字段为空白

时间:2018-09-19 20:51:25

标签: xml rest spring-boot java-8 jersey

我正在使用Jersey REST创建一个简单的Spring Boot应用程序,以返回具有ID,消息,created(LocalDate)和作者的消息对象列表。

所创建的Java 8 LocalDate类型字段在xml响应中为空白。当我返回JSON响应时,它填充得很好。 DemoBean-

@XmlRootElement
public class DemoBean {

    private long id;
    private String message;
    private LocalDate created;
    private String author;

    public DemoBean(){

    }

    public DemoBean(long id, String message, LocalDate created, String author) {
        this.id = id;
        this.message = message;
        this.created = created;
        this.author = author;
    }

端点-

@GET
    @Path("/messages")
    @Produces(MediaType.APPLICATION_XML)
    public List<DemoBean> getDemo(@QueryParam("message") String message){
        log.info("getDemo() - START");

        return demoService.getAllDemoBeans();
    }

XML响应-

> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <demoBeans>
>     <demoBean>
>         <author>xyz</author>
>         <created/>
>         <id>1</id>
>         <message>Hey there!</message>
>     </demoBean>

为什么创建的字段为空白?这里需要做什么?请帮忙。

1 个答案:

答案 0 :(得分:1)

这里的主要原因是LocalDate没有开箱即用的定义。所以您必须介绍自己的一个。

例如,您可以:

  1. XmlAdapter定义适配器:

    LocalDate
  2. 并用package us.atamai.service; import javax.xml.bind.annotation.adapters.XmlAdapter; import java.time.LocalDate; public class LocalDateAdapter extends XmlAdapter<String, LocalDate> { public LocalDate unmarshal(String v) throws Exception { return LocalDate.parse(v); } public String marshal(LocalDate v) throws Exception { return v.toString(); } } 标记吸气剂:

    @XmlJavaTypeAdapter

之后,您将获得下一个输出:

@XmlJavaTypeAdapter(value = LocalDateAdapter.class)
public LocalDate getCreated() {
    return created;
}