我使用Apache CXF 2.4.2,当我从数据库返回一些对象给用户时,我想排除一些属性(例如密码)。我怎样才能做到这一点没有创建临时类?有没有对此进行注释?CXF:如何通过SOAP发送对象时排除某些属性?
5
A
回答
10
根据@tomasz-nurkiewicz评论我应该使用@XmlTransient
注释。但正如文件指出
默认情况下,如果一个类@XmlAccessorType不存在,并没有它的超类的标注有@XmlAccessorType,则假定在类以下默认:
@ XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
凡XmlAccessType.PUBLIC_MEMBER
意味着:
每一个公共的getter/setter对每PU blic字段将自动绑定到XML,除非由XmlTransient注释。只有在通过适当的JAXB注释明确注释的情况下,私有,受保护或默认为仅包访问的字段或getter/setter对才绑定到XML。
所以这就是为什么@XmlTransient
私人领域不适用于Tomasz Nurkiewicz的例子。有两种可能的方式来解决这个问题:
1)添加注释到公共的getter:
private String password;
@XmlTransient
public String getPassword() {
return password;
}
2)添加@XmlAccessorType
类:http://old.nabble.com/@XmlTransient-ignored-td7406659.html
4
我假设您使用JAXB进行对象 - XML映射。在这种情况下,只需使用@XmlTransient
注释要在数据库实体中跳过的字段即可。
@XmlTransient
private String password;
但是请注意,有一天你会发现你确实需要临时类主要是从后端解耦CXF Web服务。毕竟你不想记得所有在数据库中添加一列的时间立即打破了SOAP接口...
相关问题
- 1. 通过子对象属性值排序对象属性
- 2. 将对象克隆到另一个对象,但排除某些属性?
- 3. 如何通过onmouseup发送属性?
- 4. 如何通过其对象属性对ArrayList进行排序?
- 5. 如何通过NSString属性对对象数组进行排序
- 6. 如何排除Knockoutjs toJS()某些性质
- 7. 如何通过Cocoa Touch中的某个属性来排列对象的数组?
- 8. 如何通过POSTMAN发送SOAP请求
- 9. 通过对象属性对对象的javascript数组排序
- 10. 如何通过intent发送对象
- 11. Angular:如何通过$ http.get发送对象?
- 12. 如何通过包发送对象
- 13. 如何通过TCP发送JSON对象?
- 14. observable对象不显示某些属性
- 15. C#foreach改变某些对象属性?
- 16. 更新某些对象属性
- 17. 如何排除某些公共属性被序列化为JsonResult?
- 18. 如何排除具有某些属性的元素?
- 19. 当某些对象具有零属性时,对散列数组进行排序
- 20. 通过嵌套属性的值排序对象属性
- 21. 只通过WCF发送已填充的对象属性?
- 22. 如何通过对象的属性对对象数组进行排序?
- 23. 排除在foreach循环中的某些对象属性jQuery的AJAX
- 24. 如何在序列化C#时排除属性 - 对象
- 25. 通过tcp发送可发送对象
- 26. 通过除这些对象的属性之外的其他属性对对象列表进行分组
- 27. 使用Linq,按某些属性排序对象并选择前2个对象
- 28. SQL - 排除某些时段
- 29. 使通过SOAP发送的对象的方法可见
- 30. 通过对象属性提取对象
我:
在找到'我不确定我使用了什么,因为我只在'pom.xml'中添加了'cxf-rt-frontend-jaxws'和'cxf-rt-transports-http'来使用CXF。但是我在我的WAR包中看到'jaxb-impl-2.1.13.jar'和'cxf-rt-databinding-jaxb-2.4.3.jar',看起来你是对的。我尝试使用'@ XmlTransient'没有运气:(我也为整个班级添加了@ @ XmlRootElement',但没有任何变化。你有另一个提示吗? –
你好!我使用Google搜索并做了一些小小的研究,发现如何解决我的问题看到我的最新消息,我也赞成你的回答,因为它能帮助我找到正确的解决方案,谢谢! –