【问题标题】:Hide an entity variable from xml message - @XmlTransient not working从 xml 消息中隐藏实体变量 - @XmlTransient 不起作用
【发布时间】:2013-09-07 08:25:45
【问题描述】:

我有一个实体类:

public class Customer implements Serializable {
private static final long serialVersionUID = 1L;

@XmlTransient
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "CUSTOMER_ID")
private Integer customerId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 30)
@Column(name = "NAME")
private String name;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 30)
@Column(name = "ADDRESSLINE1")
private String addressline1;
@Basic(optional = false)
.
.
.
.

我在 jax-ws 网络服务中通过 xml 发送了一个类的对象,如下所示:

<addressline1>xx</addressline1><addressline2>xx</addressline2><city>xx</city><country>xx</country><creditLimit>xx</creditLimit><customerId>xx</customerId><email>xx</email><name>xx</name><owner>xx</owner><phone>xx</phone><province>xx</province><zip>xx</zip>

是否可以不发送客户不应该看到的变量之一,例如 customerId? 我添加了@XmlTransient,但没有任何变化。

【问题讨论】:

    标签: java xml web-services jaxb xmltransient


    【解决方案1】:

    默认情况下,公共属性被序列化为 XML。您将需要标记相应的get 方法@XmlTransient。如果您希望对字段进行注释,您可以将以下内容添加到您的班级 @XmlAccessorType(XmlAccessType.FIELD)

    更多信息

    【讨论】:

    • 感谢您的回复,效果很好。这些小东西很难找到。
    【解决方案2】:

    尝试了@XmlTransient@XmlAccessorType(XmlAccessType.FIELD) 的不同组合,但在我的机器上它不起作用。

    隐藏函数对我有用的是用 @WebMethod(exclude = true) 注释每个函数,将其隐藏在 wsdl 之外,从而暴露给客户。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多