4

私はJavaJersey1.xを使用して、複数のメンバーを持つオブジェクトをマーシャリングしています。そのうちの1つはリストです。すべてのメンバー変数は適切にマーシャリングされ、正しい戻りタイプで返されます。objectListただし、戻りデータには含まれていません。

例:

@XmlRootElement
public class ClassWithList {
    private String front;
    private int total;
    private ArrayList<AnotherPOJOObject> objectList;
...
getters/setters

ゲッター:

public List<AnotherPOJOObject> getObjectList() {
    return objectList;
}

私はそれをデバッグし、objectListに実際にデータが入力されていることを確認しました。 AnotherPOJOObjectとしても注釈が付けられていますXmlRootElement

4

3 に答える 3

1

私は同じ問題に直面し、試行錯誤の末に解決しました。

に注釈@XmlElementWrapper(name = "orders")を付けてgetObjectList()、型もprivate List<AnotherPOJOObject> objectList;

于 2012-09-15T06:02:59.737 に答える
1

http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/annotation/XmlAccessorType.htmlをご覧ください。JAXB が POJO のシリアル化を試みる方法について詳しく説明します。特に、デフォルトは public メンバーのみであることに注意してください。これは、「XmlTransient によって注釈が付けられていない限り、すべての public getter/setter ペアとすべての public フィールドが自動的に XML にバインドされる」ことを意味します。この場合、objectList のパブリック セッター フィールドがないため、JAXB はそれをシリアル化しません。シリアル化するリストを取得するには、次のことができます。

  • objectList のパブリック セッター メソッドを追加する
  • objectList を public として宣言します (おそらく良い考えではありません)。
  • getter にアノテーションを追加して@XmlElement、リストを XML にマーシャリングするように JAXB に明示的に指示します。
于 2012-09-14T17:31:20.893 に答える
0

basiljames への提案のおかげで、答えに近づくことができました。AnotherPOJOOject本当の問題は、結局のところ、リストがそれほど単純ではなかったことです。各オブジェクトにはMap独自の型指定されていないものがあり、マーシャラーは常にオブジェクトの型を知りたいため、適合しませんでした。

あなたが返すすべてのコレクションが明確に定義された型を持っていることを確認するために、この回答からの要点を推測します!

于 2012-09-16T14:44:59.660 に答える