Jaxb:处理rest webservice响应中的可选元素

时间:2012-09-25 20:30:49

标签: java xml web-services rest jaxb

我有一个Object Ticket,它有一个与之关联的元素totalNoOfTickets。我在我的休息服务的许多方法中使用此对象Ticket。但是,我只需要一个方法的'totalNoOfTickets'元素而不是其他方法......

例如,在我的一种方法中,我说......

Ticket.setTotalNoOfTickets(7);

我在其他方法中不使用此totalNoOfTickets。因此,我不会在其他方法中设置它。

现在在我的Ticket.java中......我有

public class Ticket
    extends ActionType {

    @XmlElementWrapper(name = "Tickets")
    @XmlElement(name = "Ticket")
    protected List<Ticket> tickets;

    @XmlElement(name = "TotalNumOfTickets")
    protected int totalNumofTickets;

    public int getTotalNumofTickets() {
        return totalNumofTickets;
    }

    public void setTotalNumofTickets(int totalNumoftokens) {
        this.totalNumofTickets = totalNumoftickets;
    }

在方法响应中,我设置totalNumoftickets,响应包含:

<TotalNumOfTickets>7</TotalNumOfTickets>

但是,即使在回复中,我不需要totalNumoftickets,响应包含

<TotalNumOfTickets>0</TotalNumOfTickets>

在Jax-B中有什么方法可以没有

<TotalNumOfTickets>0</TotalNumOfTickets>

在方法的响应中,我没有设置totalNumoftickets?...我可以选择使用该元素

1 个答案:

答案 0 :(得分:2)

默认情况下,JAXB (JSR-222)实施不会封送null值。您可以将totalNumofTickets字段/属性更改为Integer,并在不想编组时将值设置为null。

public class Ticket
    extends ActionType {

    @XmlElementWrapper(name = "Tickets")
    @XmlElement(name = "Ticket")
    protected List<Ticket> tickets;

    @XmlElement(name = "TotalNumOfTickets")
    protected Integer totalNumofTickets;

    public Integer getTotalNumofTickets() {
        return totalNumofTickets;
    }

    public void setTotalNumofTickets(Integer totalNumoftokens) {
        this.totalNumofTickets = totalNumoftickets;
    }

}

了解更多信息