javax.xml.bind.UnmarshalException ibator

时间:2016-09-07 19:20:05

标签: java xml java-ee web-development-server ibator

我不知道我做错了什么

@Path("/orderService")
public class PlaceOrder {

    @POST
    @Path("/placeOrder")
    @Consumes({ MediaType.APPLICATION_JSON })
    public void placeOrder(PlaceOrderRequest placeOrderRequest,@Context HttpHeaders headers, @Context HttpServletRequest request,@Context HttpServletResponse response)
            throws GwExceptions {
        if(5>2){
            boolean truechils=true;
        }
    }
}

这是我的placeOderReques类

@XmlRootElement(name = "placeorderequest")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {"userName","numberOfItem","orderTimeslot",
        "userAddress","addressLandmark","orderStatus","totalPrice"})
public class PlaceOrderRequest extends RestApiResponseParent{

    @XmlElement(name = "userName", required = true)
    @SerializedName("userName")
    private String userName;

    @XmlElement(name = "numberOfItem", required = true)
    @SerializedName("numberOfItem")
    private int numberOfItem;

    @XmlElement(name = "orderTimeslot", required = true)
    @SerializedName("orderTimeslot")
    private Date orderTimeslot;

    @XmlElement(name = "userAddress", required = true)
    @SerializedName("userAddress")
    private String userAddress;

    @XmlElement(name = "addressLandmark", required = true)
    @SerializedName("addressLandmark")
    private String addressLandmark;

    @XmlElement(name = "orderStatus", required = true)
    @SerializedName("orderStatus")
    private String orderStatus;

    @XmlElement(name = "totalPrice", required = true)
    @SerializedName("totalPrice")
    private Double totalPrice;


    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getNumberOfItem() {
        return numberOfItem;
    }

    public void setNumberOfItem(int numberOfItem) {
        this.numberOfItem = numberOfItem;
    }

    public Date getOrderTimeslot() {
        return orderTimeslot;
    }

    public void setOrderTimeslot(Date orderTimeslot) {
        this.orderTimeslot = orderTimeslot;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }

    public String getAddressLandmark() {
        return addressLandmark;
    }

    public void setAddressLandmark(String addressLandmark) {
        this.addressLandmark = addressLandmark;
    }

    public String getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public Double getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(Double totalPrice) {
        this.totalPrice = totalPrice;
    }       
}

*我正在使用rest api client发送请求*这里是错误日志

Caused by: com.sun.istack.SAXParseException2; columnNumber: 0; 
    unexpected element (uri:"", local:"userName"). 
    Expected elements are <{}common_object>,
                          <{}placeorderequest>,
                          <{}response_parent>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:662)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:258)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:253)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:120)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1063)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:498)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:480)
at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:75)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:246)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:180)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
at org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:232)
... 43 more
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"userName"). 
      Expected elements are <{}common_object>,
                            <{}placeorderequest>,
                            <{}response_parent>

我收到的回复是

JAXBException occurred : unexpected element (uri:"", local:"userName").
    Expected elements are <{}common_object>,
                          <{}placeorderequest> 
                          <{}response_parent>. 
    unexpected element (uri:"", local:"userName"). 
    Expected elements are <{}common_object>,
                          <{}placeorderequest>,
                          <{}response_parent>. 

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

cxf-dev主板上的答案表明您需要为@XmlRootElement

设置名称空间

所以:@XmlRootElement(name = "placeorderequest", namespace="")