en utilisant Restlet, les annotations XStream semblent avoir aucun effet
Question
Utilisation @XStreamOmitField dans mon POJO semble avoir aucun effet. le champ annoté obtient toujours exposé dans la représentation XML ou JSON.
@XStreamAlias("Pojo")
@Entity
public class Pojo {
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
@XStreamOmitField
private String hidden;
public Pojo(String name, String hidden) {
this.name = name;
this.hidden = hidden;
}
}
et dans le ServerResource
@Get
public Pojo test() {
Pojo pj= new Pojo("hansi","hinter");
return pj;
}
me reçoit
<com.myComp.ORMTest.Pojo>
<name>hansi</name>
<hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Toutes les idées pourquoi les annotations sont ignorées?
La solution
Vous devez dire XStream pour traiter explicitement annotations:
XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);
Ou, vous devez ajouter ce code à dire XStream pour traiter toutes les annotations:
xstream.autodetectAnnotations(true);
Autres conseils
Deux choses me viennent à l'esprit:
1.) Avez-vous dit XStream pour analyser les annotations?
2.) Est-ce que votre framework web peut-être utiliser les proxies pour accéder aux POJO et ceux qui ne délèguent pas les annotations? (Qui est arrivé à un ami avec Apache Tapestry)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow