我有一个WebService,它作为Web服务Invokation的结果返回一个名为" CustomerResponse" 的ResponseObject .当我从头开始实现这个对象时,一切正常:在这种情况下,我的实现只包含所有需要的"简单类型",如字符串,整数,但没有对象引用/关联.
但是,我想要做的是"重用"现有的对象.我在我的域模型中有一个" Customer"对象,它在应用程序本身中使用.而不是愚蠢地或多或少地克隆Customer到"CustomerReponse"对象(通过再次手动键入所有成员/字段),我想通过扩展将CutomerResponse对象基于CustomerObject:
class CustomerResponse extends Customer
Run Code Online (Sandbox Code Playgroud)
==>问题是现在CustomerResponse包含一些从CustomerObject 继承的"内部"字段(如DatabaseID,Security-Stuff),我不希望通过Web服务公开这些字段.此外(和多数民众赞成目前的主要问题")Customer中还含有大量的'对象引用/协会’像其他对象Address,Orders,History我不想通过web服务或者暴露.(似乎阿帕奇CXF'评估’全Objectgraph并尝试将它们包含在ResponseObject中......)
==>是否可以基于现有对象"扩展"WebService响应对象,并以某种方式排除扩展超级类型的某些"成员/字段"?(所以我想排除一些成员(如DatabseID)和所有"对象关联",如(地址/订单/ Histroy).我怎样才能用注释和程序来完成这个?
非常感谢你!!一月
Pim*_*oso 11
关于@XmlTransient注释,我发现你需要将它放在要隐藏的字段的getter方法上.
public class InputBean
{
private String fieldShow;
private transient String fieldHide;
public String getFieldShow() {
return fieldShow;
}
public void setFieldShow(String fieldShow) {
this.fieldShow = fieldShow;
}
@XmlTransient
public String getFieldHide() {
return fieldHide;
}
public void setFieldHide(String fieldHide) {
this.fieldHide = fieldHide;
}
}
Run Code Online (Sandbox Code Playgroud)
在该示例中,"fieldHide"在服务xsd上不可见.
@XmlTransient注释用于隐藏您不想显示的成员.您应该能够注释这些成员,并且它们不会受到约束.或者,将@XmlAccessorType更改为XmlAccessType.NONE,并且只有特定注释的方法才会绑定到XML.
| 归档时间: |
|
| 查看次数: |
11271 次 |
| 最近记录: |