CXF:如何在通过SOAP发送对象时排除某些属性?
我使用Apache CXF 2.4.2,当我从数据库向用户返回一些对象时,我想要排除一些属性(例如,密码)。 如何在不创建临时课的情况下做到这一点? 这有注释吗?
根据@ tomasz-nurkiewicz评论我应该使用@XmlTransient
注释。 但正如文档中所述
默认情况下,如果某个类上没有@XmlAccessorType,并且没有使用@XmlAccessorType对其超类进行批注,则假定该类具有以下默认值:
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
其中XmlAccessType.PUBLIC_MEMBER
表示:
除非通过XmlTransient注释,否则每个公共getter / setter对和每个公共字段都将自动绑定到XML。 私有,受保护或默认为仅包访问的字段或getter / setter对仅在通过适当的JAXB注释显式注释时才绑定到XML。
所以这就是为什么@XmlTransient
for private field在Tomasz Nurkiewicz的例子中不起作用的原因。 有两种方法可以解决这个问题:
1)向公共getter添加注释:
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
我假设您正在使用JAXB进行对象XML映射。 在这种情况下,只需使用@XmlTransient
注释要在数据库实体中跳过的字段。
@XmlTransient private String password;
但请注意,有一天您会发现您确实需要一个临时课程,主要是为了将您的CXF Web服务与后端分离。 毕竟你不想记住在数据库中添加列的所有时间都会立即破坏SOAP接口……
- 缺少cxf.xml? 在maven中失败,在Eclipse中工作
- 停止Apache CXF记录MultipartBody附件的二进制数据
- 无法解析http://schemas.xmlsoap.org/wsdl/soap/的绑定
- 如何使用Maven“shade”插件将Apache CXF应用程序打包到单片JAR中
- Json Mapping Exception无法反序列化START_ARRAY令牌中的实例
- CXF抛出任何政策选择都不能满足
- 使用Apache CXF通过REST解析String 请求参数
- Apache CXF客户端在Eclipse中加载正常,但独立的jar在WSDLServiceFactory中抛出NullpointerException
- 推荐的JAX-WS框架,用于处理Moxy