2013-09-04 7 views
5

Mam klasy jednostki:Ukryj zmienną podmiot z komunikatu XML - nie @XmlTransient roboczą

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) 
. 
. 
. 
. 

wysłałem obiekt klasy poprzez XML w JAX-WS serwisu WWW tak:

<addressline1>Bunkilla</addressline1><addressline2>Donoughmore</addressline2><city>Cork</city><country>Ireland</country><creditLimit>10</creditLimit><customerId>1</customerId><email>[email protected]</email><fax>0217337330</fax><name>David</name><owner>david</owner><phone>0217437661</phone><province>Munster</province><zip>02</zip> 

Czy można nie wysłać jednej ze zmiennych, takich jak customerId, których klient nie powinien widzieć? Dodano @XmlTransient, ale bez zmian.

Odpowiedz

16

Domyślnie właściwości publiczne są serializowane do XML. Będziesz musiał oznaczyć odpowiednią metodę get@XmlTransient. Jeśli chcesz zanotować pola, możesz dodać do swojej klasy: @XmlAccessorType(XmlAccessType.FIELD).

Aby uzyskać więcej informacji

+1

Dzięki za odpowiedź, działał ładnie. Te małe rzeczy są trudne do znalezienia. – David031

0

Próbowałem z @XmlTransient w różnych kombinacjach z @XmlAccessorType(XmlAccessType.FIELD), na moim komputerze nie działa.

To, co dla mnie działa, aby ukryć funkcje, to opisanie każdej funkcji za pomocą @WebMethod(exclude = true), aby ukryć ją przed wsdl i tym samym wystawić na działanie klienta.