我使用Apache CXF 2.4.2,当我从数据库向用户返回img时,我想排除一些属性(例如,密码)。如何在不创建临时类的情况下执行?是否有对此的注释?

最佳答案

根据@ tomasz-nurkiewicz注释,我应该使用 @XmlTransient 批注。但正如文档中所述

默认情况下,如果不存在类上的@XmlAccessorType,并且没有使用@XmlAccessorType对其超级类进行注释,则假定该类具有以下默认值:

@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)

其中XmlAccessType.PUBLIC_MEMBER表示:

除非由XmlTransient注释,否则每个公共获取器/设置器对和每个公共字段都将自动绑定到XML。私有,受保护或默认为仅打包访问的字段或getter / setter对仅在由相应的JAXB注释显式注释时才绑定到XML。

因此,这就是为什么Tomasz Nurkiewicz的示例中的私有字段@XmlTransient不起作用的原因。有两种方法可以解决此问题:

1)向公共获取者添加注释:

private String password;

@XmlTransient
public String getPassword() {
    return password;
}

2)在类中添加@XmlAccessorType:
@XmlAccessorType(XmlAccessType.FIELD)
public User {

    @XmlTransient
    private String password;

}

发现于:http://old.nabble.com/@XmlTransient-ignored-td7406659.html

07-24 09:38