球衣的EntityHolder类型的层次结构

问题描述

||
@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种用法:
@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;
}
现在,在两种情况下,实体所有者都持有InterationRequest对象,该对象在第二种用法中导致ClassCastException。 知道为什么吗? Jersey是否不应该将实体转换为我声明的类型? 在这种情况下,甚至可以进行等级划分吗? 谢谢, 乌迪     

解决方法

        您对JAXB注释有问题:
InteractionRequest
InteractionChatRequest
都用
@XmlRootElement(name = \"request\")
注释。因此它们具有相同的根元素,这使得JAXB无法区分它们。 尝试将
InteractionChatRequest
更改为
@XmlRootElement(name = \"chat-request\")
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...