Используя RESTlet, аннотации XStream, похоже, не влияют
Использование @XStreamOmitField в моем POJO, похоже, не имеет никакого эффекта. аннотированное поле по-прежнему отображается в представлении xml или 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;
}
}
и в ServerResource
@Get
public Pojo test() {
Pojo pj= new Pojo("hansi","hinter");
return pj;
}
получает меня
<com.myComp.ORMTest.Pojo>
<name>hansi</name>
<hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Любые идеи, почему аннотации игнорируются?
Ответы
Ответ 1
Вы должны сказать XStream явно обработать аннотации:
XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);
Или вы должны добавить этот код, чтобы сообщить XStream обрабатывать все аннотации:
xstream.autodetectAnnotations(true);
Ответ 2
Приходят на ум две вещи:
1.) Вы сказали XStream разобрать аннотации?
2.) Может ли ваша веб-среда использовать прокси для доступа к pojos, и те, кто не делегируют аннотации? (случилось с другом с Apache Tapestry)