Pergunta

Usar @xstreamomitfield no meu pojo parece não ter nenhum efeito. O campo anotado ainda é exposto na representação 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;
    }
}

E no servidorResource

@Get
public Pojo test() {
    Pojo pj= new Pojo("hansi","hinter");
    return pj;
}

me pega

<com.myComp.ORMTest.Pojo>
  <name>hansi</name>
  <hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>

Alguma idéia de por que as anotações são ignoradas?

Foi útil?

Solução

Você precisa dizer ao XStream para processar explicitamente as anotações:

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

Ou você deve adicionar este código para dizer ao XStream para processar todas as anotações:

xstream.autodetectAnnotations(true);

Outras dicas

Duas coisas vem a mente:

1.) Você disse ao XStream para analisar as anotações?

2.) Sua estrutura da web talvez use proxies para acessar os Pojos e esses não delegam as anotações? (aconteceu com um amigo com tapeçaria Apache)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top