我使用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