java - JAX-RS 在运行时更改 @XmlRootElement.name

标签 java jax-rs jersey-2.0 jaxb2

我有一个无法修改的 DTO,但在新端点上使用需要它。问题是 RootElement 名称必须更改,有没有办法在特定端点上更改此名称?

@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "wccevent")
public class SimpleWCCEvent {
..
}

在我的新端点上,我需要将根名称从 wccevent 更改为 apiresponse,这可能吗?

类似于

@GET
...
@XmlFeatures({overrideRootName = "apiresponse"})
public Response newEndpoint(){
...
}

最佳答案

由于 API 发生了更广泛的变化,是否需要对 DTO 进行更改?也许您可能需要考虑如何在更大的架构中处理 API 更改。

另外看看这个answer这建议重写根元素名称,如下所示:

String xml mapper.writer().withRootName("movies").writeValueAsString(movies);

关于java - JAX-RS 在运行时更改 @XmlRootElement.name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559933/

相关文章:

jsp - 尝试从 Jersey 2 呈现 JSP 时出现 404

java - 来自 JAX-RS 客户端的确认

java - 使用 FactoryModuleBuilder 的 HK2 等效辅助注入(inject)

java - 对 JComboBox 使用 switch 语句

java - 如何使用 Spring MVC 在 angularjs 中进行用户身份验证

Java 导出为 XML 不起作用

java - 使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色

java - 当异步连接数超过 7 时,Jersey 卡住

java - 如何使用java可调用接口(interface)异步处理队列项?

使用 JNI 的 Java 守护线程