2010-02-20 6 views
10

Die Verwendung von @XStreamOmitField in meinem POJO scheint überhaupt keinen Effekt zu haben. Das mit Anmerkungen versehene Feld wird weiterhin in der xml- oder json-Darstellung angezeigt.mit RESTlet, XStream-Annotationen scheinen keine Wirkung zu haben

@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; 
    } 
} 

und in der ServerResource

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

bringt mich

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

Irgendwelche Ideen, warum die Anmerkungen ignoriert werden?

+0

Ok, das scheint nicht das einzige Problem bei der Zusammenarbeit von GAE, RESTlet und XStream zu sein. Ich suche jetzt nach einer anderen Lösung. – chaos0815

Antwort

14

Sie haben XStream zu sagen explizit Anmerkungen zu verarbeiten:

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

Oder, sollten Sie diesen Code hinzufügen XStream zu sagen, alle Anmerkungen zu verarbeiten:

xstream.autodetectAnnotations(true); 
+1

Nur eine Anmerkung für andere Sucher: automatische Erkennung von Anmerkungen funktioniert nur für die Serialisierung, * nicht * Deserialisierung. Sie müssen jede Klasse (oder ein Array davon) verarbeiten, um XML zu analysieren. –

2

Zwei Dinge in den Sinn kommen:

1.) Haben Sie sagen XStream die Anmerkungen zu analysieren?

2.) Verwendet Ihr Web-Framework möglicherweise Proxys, um auf die Pojos zuzugreifen, und diese delegieren die Anmerkungen nicht? (Zufällig einen Freund mit Apache Tapestry)

+0

Große führt. Wird anfangen in diese Richtung zu graben. Danke – chaos0815

Verwandte Themen