如何使用属性的 getter 方法上的 @XMLElement 覆盖在类级别指定的 JAXB @XMLAccessorType(XMLAccessType.FIELD)?

2024-01-11

在下面的示例代码中,Employee已使用 JAXB 字段级别访问类型指定了类。对于物业dept,但是,访问类型已在 getter 方法级别指定为@XMLElement注解。

在编组期间组织类,抛出以下异常 -

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Class has two properties of the same name "dept"
    this problem is related to the following location:
        at public java.lang.String com.playground.jaxb.Employee.getDept()
    this problem is related to the following location:
        at private java.lang.String com.playground.jaxb.Employee.dept

您能帮我理解为什么 JAXB 访问器类型的重写不起作用吗?任何解决方案也将受到高度赞赏。

Example

根元素类

package com.playground.jaxb;

@XMLRootElement(name="organization")
public class Organization {

    @XmlElementWrapper(name = "employees")
    @XmlElement(name = "employee")
    private Set<Employee> employees;

    public Organization{}

    // Remainder omitted...
}

员工阶层

package com.playground.jaxb;

@XMLAccessorType(XMLAccessType.FIELD)
public class Employee {

    private String name;

    private String dept;

    @XMLElement(name="department")
    public String getDept() {
        return dept;
    }

    public void setDept(String dept) {
        this.dept = dept;
    }

    public Employee {}

    // Remainder omitted...
}

您可以重命名 getter/setter 对,例如getDept() -> getDepartment()

private String dept;

@XmlElement(name="department")
public String getDeptartment() {
    return dept;
}

public void setDeptartment(String dept) {
    this.dept = dept;
}   

但在这种情况下,您将在 XML 中出现重复的内容

   <dept>my_dept</dept>
   <department>my_dept</department>

或者你可以注释字段dept with @XmlTransient http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/XmlTransient.html注释,如果您想更改访问类型,请输入它。

@XmlTransient
private String dept;

@XmlElement(name="department")
public String getDept() {
    return dept;
}

public void setDept(String dept) {
    this.dept = dept;
}

在这种情况下,dept字段将被忽略,并且将使用 getter/setter 对

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用属性的 getter 方法上的 @XMLElement 覆盖在类级别指定的 JAXB @XMLAccessorType(XMLAccessType.FIELD)? 的相关文章

  • Apache AVRO 与休息

    我正在评估将 Apache AVRO 用于我的 Jersey REST 服务 我将 Springboot 与 Jersey REST 结合使用 目前我接受 JSON 作为输入 并使用 Jackson 对象映射器将其转换为 Java Pojo
  • JAX-RS 服务抛出 404 HTTPException 但客户端收到 HTTP 500 代码

    我有一个 RESTful 资源 它调用 EJB 来进行查询 如果查询没有结果 EJB 将抛出 EntityNotFoundException 在 catch 块中 将抛出 javax xml ws http HTTPException 代码
  • Jersey 2.0 和 Moxy 内部服务器错误但没有服务器日志

    我遵循了 Jersey 2 0 文档 https jersey java net documentation latest user guide html json moxy https jersey java net documentat
  • 如何列出泽西岛所有注册的 JAX-RS 实体提供商

    假设我有一个带有嵌入式码头的简单球衣应用程序github上的演示项目 https github com varren jersey2 gradle embedded jetty demo repo和下面的基本代码 回到 jersey1 的日
  • 我可以从类似于 jaxb 的 json 数据创建类吗

    因此 我的代码是 api 的客户端 数据以 xml 形式返回 我已经能够从该 xml 的一些示例创建有效的 xsd 文件 然后从模式生成一些 JAXB 类 以便我的代码现在可以加载并使用xml 数据 而无需直接使用 Xml 但不幸的是 在最
  • JAXB 将 XML 元素解组到 HashMap

    我发现很多文章描述了如何将 XML 元素序列解组到 HashMap 只要它们位于 父 元素内 但是 我无法将此与直接在根元素下的子元素一起使用 选项 1 有效
  • 提供 REST Web 服务的 JEE6 企业应用程序应该如何组织?

    从一个月前开始 我正在努力学习宁静的网络服务 现在我已经练习了语法并且理解了概念 我决定制作一个非常简单的企业应用程序 其中包括 EJB JPA 和 REST 我正在付出巨大的努力来尝试了解组织这种系统的最佳方式是什么 如果在该领域有经验的
  • RESTful服务中的资源级授权

    Let users id 是 RESTful 服务中的资源 url 启用基本身份验证 仅允许经过身份验证的用户访问该 url 示例场景 User 1 User 2是通过 userId 1 和 2 进行身份验证的用户 由于两者都经过身份验证
  • 如何使用 JAXB 从 xsd 生成实现 Serialized 接口的 Java 类?

    我想将缓存引入到现有的 Spring 项目中 该项目使用 JAXB 来公开 WebServices 缓存将在端点级别完成 为了做到这一点 使用 JAXB 从 XSD 生成的类需要实现Serializable接口和覆盖Object s toS
  • jax-rs ContextResolver 理解

    但我试图了解 jax rs 中 Provider 的用法 但无法理解如何使用 ContextResolver 有人可以用一些基本的例子来解释这一点吗 您将看到它在解析序列化上下文对象时被大量使用 例如一个ObjectMapper用于 JSO
  • @XmlDiscriminatorNode/@XmlDecriminatorValue 在 WebLogic Server 上不起作用

    以下是我用于在 WebLogic 10 3 2 版本上使用 MOXy JAXB 转换创建子类的类 我使用 EclipseLink 2 4 1 MOXy 来生成 XML 我无法在以下代码中生成类型属性 如果我在这里做错了什么 请告诉我 我正在
  • 配置 Jersey + Jetty + JSP

    我如何配置该项目以便它能够呈现 JSP 文件 我希望以 rest 开头的 URL 路由到球衣资源 并让 URLS 提供 JSP 文件 我这个项目中没有任何 web xml 项目文件夹 src main java Main java reso
  • 将 XML 转换为 Java 对象 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 IntelliJ IDEA 13 中创建 JAXB 项目?

    我正在学习JAXB 我需要知道如何在 IntelliJ IDEA13 中为 JAX B 创建一个简单的 java 项目 如果有人有想法 请更新我并使用 IDEA 的任何插件更新我 Thanks 创建项目时 您无需执行任何特殊操作 只需一个简
  • 一般如何处理 CXF 请求处理程序中的输入参数?

    我一直在使用 apache CXF 版本 2 2 2 JAX RS 进行一些工作 我试图在调用业务方法之前在 CXF 请求处理程序中引入数据验证层 幸运的是 我在请求处理程序 DataValidationHandler 中遇到输入参数处理问
  • JAX-RS 多态 POST 请求:我应该如何编写 JSON?

    我在尝试用 JAX RS 解决这个问题时遇到了麻烦 我相信它与编组 解组过程有关 我认为我对此不太了解 并且我想重新创建这个 发帖的 REST 端点是 rest register 所以我的服务定义如下 ApplicationPath res
  • 使用 Jaxb 和 JDK 9 的小程序中的非法反射访问[重复]

    这个问题在这里已经有答案了 我有一个 Java 小程序 它提供了一个 GUI 来调用 Web 服务 它使用 Jaxb 解析 XML 数据并将其解组为对象 它可以在 Java 1 5 到 1 8 上正确运行 对于 Java 9 情况就不那么严
  • JAXB 枚举字段未序列化

    我有以下课程 package dictionary import java io Serializable import java util Objects import javax xml bind annotation XmlEleme
  • 告诉 JAXB 使用注释将 解组为 Date 类

    将 JAXB 与 Java First 一起使用时 类型的字段 属性java util Date编组和解编为xs dateTime一切都按预期进行 但是如果字段 属性的类型是Object JAXB 解组xs dateTimeto XMLGr
  • 需要使用自定义类而不是在 Web 服务中生成(通过 wsimport)

    您能帮忙解决以下问题吗 当生成 WS 客户端代码 使用 wsimport ant 任务 时 所有类都会在与 Web 服务相同的包 例如 helloservice endpoint 中自动生成 例如如果我的网络服务有方法 公共节点 getNo

随机推荐