【问题标题】:Issue when java method annotated with @XmlTransient in Jaxb 2.1在 Jaxb 2.1 中使用 @XmlTransient 注释的 java 方法时出现问题
【发布时间】:2013-12-18 15:09:02
【问题描述】:

我正在尝试在我的 java 类中将我的 java 方法注释为 @XmlTransient,如下所示。

@XmlAccessorType(XmlAccessType.PROPERTY)
public abstract class MyClass {

    @XmlTransient
    public void addsomething{

   // do something
    }

}

当我尝试通过其他类在我的 JaxBContext 中使用这个类时,我得到以下异常

JAXB annotation is placed on a method that is not a JAXB property
    this problem is related to the following location:
        at @javax.xml.bind.annotation.XmlTransient()

,

但是当我看到XmlTransient() 注释定义(@Target(value={FIELD,METHOD,TYPE})) 时,很明显是要使用方法。在 JavaDoc(http://docs.oracle.com/javaee/7/api/javax/xml/bind/annotation/XmlTransient.html) 中它说

The @XmlTransient annotation can be used with the following program elements:

a JavaBean property
field
class

我不能在方法上使用@XmlTransient 吗?

【问题讨论】:

  • no :) 正如 Javadoc 所说,你不能这样做
  • 为什么要将XmlTransient 添加到void 方法中?

标签: java xml jaxb


【解决方案1】:

可以使用@XmlTransient 的唯一方法是以getset 开头的方法。这些组合使用的方法用于在 Java 中公开属性。 @XmlTransient 可以放在 getset 方法上。

获取方法

get 方法必须不带参数并返回一个值:

public String getFoo() {
    return foo;
}

设置方法

set方法必须有一个参数。

public void setFoo(String foo) {
    this.foo = foo;
}

【讨论】:

  • 那么在@XmlTransient注解定义中METHOD是指Java Bean属性的getter还是setter?
  • @SRy - 没错。属性没有注解限制,所以需要使用方法。
猜你喜欢
  • 1970-01-01
  • 2014-05-17
  • 2012-12-14
  • 1970-01-01
  • 2023-03-19
  • 2019-04-29
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多