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?

Était-ce utile?

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
scroll top