2
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
@JSONConfigurable
public class InteractionRequest {
@XmlElement(name = "skill")
protected String skillName;
}
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
@JSONConfigurable
public class InteractionChatRequest extends InteractionRequest {
@XmlElement
@XmlJavaTypeAdapter(LPStringsXmlAdapter.class)
@XmlElementWrapper(name = "preChatLines")
protected List<String> line;
}
和2的用途:層次在新澤西州的EntityHolder類型
@PUT
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response postExitSurvey(EntityHolder<InteractionRequest> ent) {
InteractionRequest request = ent.getEntity();
return null;
}
@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response interactionRequest(EntityHolder<InteractionChatRequest> ent) {
InteractionChatRequest params = ent.getEntity();
return null;
}
現在,在這兩種情況下,實體保持器保持,這導致在第二利用一個ClassCastException InterationRequest對象。
任何想法爲什麼? Jersey不應該將實體轉換爲我聲明的類型嗎? 在這種情況下甚至可能是層次結構?
感謝, 烏迪
謝謝@Tarlog工作。這不是一個完美的解決方案,但嘿,生活並不完美;) – Udi 2011-05-29 13:09:22
只要有人遇到這個問題,我發現一個更好的解決方案: 我將@ InteractionChatRequest的註釋從@XmlRootElement更改爲@XmlType。 現在它的工作原理與我想要的完全一樣... – Udi 2011-05-29 15:14:30