Использование JAXB, я не могу понять, как маршал Properties
. В частности, я пытаюсь маршалировать SimpleObjectProperty
, но я полагаю, что он не будет работать и с другими свойствами. В некоторых других классов, я был в состоянии управлять геттеры/сеттеры, но это не будет работать в этом случае с HashMap
из SimpleObjectProperties
JAXB marshall Свойства
Вот мой фрагмент кода:
..
@XmlRootElement(name = "derby")
@XmlAccessorType(XmlAccessType.FIELD)
public class Derby extends Observable {
@XmlElement(name = "cars")
private final ArrayList<Car> cars;
@XmlTransient
private final ObservableList<Car> carsObservable;
@XmlElement(name = "schedule")
private final SimpleObjectProperty<Schedule> scheduleProperty;
@XmlElement(name = "settings")
private final HashMap<String, SimpleObjectProperty> settings;//This is not marshalling correctly
..
А вот выход XML фрагмент:
...
<settings>
<entry>
<key>track.lanecount</key>
<value/> //No value???
</entry>
<entry>
<key>general.cardisplay</key>
<value/>
</entry>
<entry>
<key>track.orientation</key>
<value/>
</entry>
<entry>
<key>general.derbytitle</key>
<value/>
</entry>
</settings>
...
Я создаю переменные и не оставляю их неинициализированными. Я также тестировал, действительно ли настройки имеют значение перед сортировкой, и они это делают.
Причина, по которой я использую Properties
вместо реального объекта, который я пытаюсь сохранить, заключается в том, что я хочу добавить слушателей к моим настройкам, поэтому при изменении одного параметра все вещи, которые полагаются на него, будут обновляться автоматически.
Большое предостережение: Я ничего не знаю о JAXB и никогда не работал с ним. Однако ... что вам нужно, это маршал * содержимого * свойства. В мире JPA это делается с помощью реализации JPA с использованием методов get/set для доступа к данным. См. [Этот блог] (http://svanimpe.be/blog/properties-jpa.html) или [этот] (https://www.marshall.edu/genomicjava/2014/05/09/one-bean- к-затруднительное-их-всех /). Может быть, есть какая-то эквивалентная идея в JAXB? –