12

在我的 POJO 中使用 @XStreamOmitField 似乎没有任何效果。带注释的字段仍以 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>

任何想法为什么忽略注释?

4

2 回答 2

15

您必须告诉 XStream 显式处理注释:

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

或者,您应该添加以下代码来告诉 XStream 处理所有注释:

xstream.autodetectAnnotations(true);
于 2011-11-18T20:32:00.490 回答
2

想到两件事:

1.) 您是否告诉 XStream 解析注释?

2.) 您的 Web 框架是否可能使用代理来访问 pojo 而那些不委托注释?(发生在一个使用 Apache Tapestry 的朋友身上)

于 2010-02-23T22:59:08.333 回答