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

次の 2 つのことが思い浮かびます。

1.) XStream に注釈を解析するように指示しましたか?

2.) Web フレームワークはおそらくプロキシを使用して pojo にアクセスし、それらは注釈を委任しませんか? (Apache Tapestry の友人に起こったこと)

于 2010-02-23T22:59:08.333 に答える