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对象以使它有一个空的名称空间,那么上面的语法工作正常。
有没有人看到我在做什么错在这里?应如何设置命名空间,以及如何正确地将它们传递给服务?