с помощью RESTlet аннотации XStream, похоже, не имеют никакого эффекта - PullRequest
11 голосов
/ 20 февраля 2010

Использование @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>

Есть идеи, почему аннотации игнорируются?

Ответы [ 2 ]

15 голосов
/ 19 ноября 2011

Вы должны указать XStream явно обрабатывать аннотации:

XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);

Или вы должны добавить этот код, чтобы XStream обрабатывал все аннотации:

xstream.autodetectAnnotations(true);
2 голосов
/ 24 февраля 2010

На ум приходят две вещи:

1.) Вы сказали XStream проанализировать аннотации?

2.) Возможно, ваша веб-инфраструктура использует прокси для доступа к pojos, а те не делегируют аннотации? (случилось с другом с Apache Tapestry)

...