泛型 – JAX-RS对XML或JSON的响应不起作用
我有以下GenericRest类,我用它来扩展基于使用@XmlRootElement注释的Entity类的rest类.
public class GenericRest<T extends BaseEntity> { @Inject @Service GenericService<T> service; public GenericService<T> getService() { return service; } @GET @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) public Response getAll() { // This works for JSON but does not work for XML Requests. List<T> list = getService().findAll(); // This just gives the attributes for the BaseEntity. //GenericEntity<List<T>> list = new GenericEntity<List<T>>(getService().findAll()) {}; return Response.ok(list).build(); } } APPLICATION_JSON在当前未注释的情况下工作正常,但APPLICATION_XML给出错误:
注释的情况适用于两种MediaTypes,但只返回BaseEntity的属性,而不是扩展类的添加属性.如何获取扩展类的属性并使两个MediaType都有效? 可以在此处找到完整的存储库(正在进行中):https://github.com/martijnburger/multitenant ===更新1 === 我更改了实体上的@XmlSeeAlso注释.它是在特定实体上,但需要在BaseEntity上.此外,我使用了上面的GenericList实现.这给出了正确的XML响应.但是,它仍然只返回JSON repsonses中的BaseEntity属性.我有两个后续问题: >如何返回JSON响应,包括请求的特定对象的属性? 可以在此处找到包含更改的存储库:https://github.com/martijnburger/multitenant/tree/so_36291250 ===更新2 === 我很希望杰克逊的@JsonSubTypes注释可以解决我的问题1.然而,事实并非如此.我使用Jackson注释更新了存储库,但我看不到结果的任何变化. ===更新3 === 请忽略我的更新2.当使用Jackson 2而不是Jackson 1时,它完全有效.初学者错了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |