Почему мой список не сериализован в JAXB? - PullRequest
3 голосов
/ 08 декабря 2011

Я новичок в использовании JAXB и сейчас борюсь с проблемой.Возможно, вы можете мне помочь.

У меня есть следующий код:

@XmlRootElement
public class Students implements Serializable{

private static final long serialVersionUID = 1L;

private List<Person> personList;
private int id;

// getters and setters for the attributes

}

и

 @XmlRootElement
 public class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;
private int sex;

    //getters and setters for the attributes
 }

, когда я пытаюсь вывести студентов на JAXB, у меня есть толькоid-элемент в результирующей строке.У меня нет списка (человек).Где здесь проблема?

Ответы [ 2 ]

6 голосов
/ 08 декабря 2011

Нет ничего особенного, что вам нужно сделать для маршала List свойств. Просто убедитесь, что одно из следующего верно:

Если вы используете эталонную реализацию JAXB и у вас есть получатель для свойства List, но нет установщика, то вам нужно будет пометить получатель @XmlElement

@XmlRootElement
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

    @XmlElement
    public List<Person> getPersonList() {
        return personList;
    }

}

Если у вас нет общедоступного доступа, убедитесь, что вы используете полевой доступ:

@XmlRootElement
@XmlAccessorType(XmlAcceesType.FIELD)
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

}

Если у вас есть метод получения и установки свойства List, вам не нужно ничего делать:

@XmlRootElement
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> person = new ArrayList<Person>();

    public List<Person> getPersonList() {
        return person;
    }

    public void setPersonList(List<Person> personList) {
        this.person = personList;
    }

}

Для получения дополнительной информации

0 голосов
/ 08 декабря 2011

Хм, попробуйте пометить класс Person как @XmlType (я думаю, что это не обязательно), а все поля классов Student и Person - @ XmlElement

...