3
我一直在試圖將我的腦袋繞過POST JSON到REST服務和JAXB命名空間。我使用Resteasy來標記服務器端方法。我有以下服務:REST + JSON + JAXB +命名空間
@POST
@Mapped(namespaceMap={@XmlNsMap(namespace="http://acme.com", jsonName=""))
@Path("/search")
@Consumes("application/json")
public List<I> search(SearchCriteria crit);
我有以下對象:
@XmlRootElement(namespace="http://acme.com")
public class DateCriteria {
@XmlElement
private Date start;
@XmlElement
private Date end;
}
@XmlRootElement(namespace="http://acme.com")
public class MultCriteria {
@XmlElementRefs({@XmlElementRef(type=DateCriteria.class)})
private List<DateCriteria> dateCriterias;
}
我可以在郵寄以下JSON和它的作品:
{ "acme.MultCriteria": { "acme.DateCriteria": { startDate: "2009/01/01", endDate: "2009/01/01" } } }
在服務,我使用DateCriteria的單個元素列表來獲取MultCriteria對象。奇怪的是,我必須傳遞JSON對象中的名稱空間,即使我使用映射將服務標記爲空名稱空間。
如果我嘗試按以下方式發送陣列:
{ "acme.MultCriteria": { "acme.DateCriteria": [ { startDate: "2009/01/01", endDate: "2009/01/01" }, { startDate: "2009/01/01", endDate: "2009/01/01" } ] } }
我得到一個MultCriteria物體DateCriteria的空列表。如果我修改DateCriteria對象以使它有一個空的名稱空間,那麼上面的語法工作正常。
有沒有人看到我在做什麼錯在這裏?應如何設置命名空間,以及如何正確地將它們傳遞給服務?