Можно ли при желании сериализовать свойство класса через JAXB? - PullRequest
1 голос
/ 25 августа 2010

Возможно ли при желании сериализовать свойства класса через JAX-B, используя некоторый динамический флаг?

например. Предположим, у меня есть

@XmlRootElement
public class TodoItem {
 private int id;
 private String title;
 private String note;

 // getters, setters

}

и следующие операции веб-службы:

 public TodoItem getTodoItemFull(int id) {  .... }
 public TodoItem getTodoItemMinimal(int id) { .... }

Есть ли специальная аннотация, которую я могу использовать, чтобы я мог во время выполнения решить, будет ли свойство "note" быть сериализовано? Другими словами, метод getTodoItemFull () вернет полностью сериализованный класс, а метод getTodoItemMinimal () вернет этот сериализованный класс без элемента xml «note»?

Спасибо,!

1 Ответ

1 голос
/ 25 августа 2010

Вы можете сделать это, применив несколько сопоставлений к вашей объектной модели. Стандартный JAXB позволяет применять только одно сопоставление посредством аннотаций. Другие реализации JAXB, такие как MOXy (я веду эту реализацию), также позволяют вам представлять метаданные в виде XML:

У вас может быть один JAXBContext, построенный на одном наборе метаданных, который полностью отображает объектную модель, которую будет использовать «getTodoItemFull», и другой JAXBContext, построенный на другом наборе метаданных, который частично отобразит объектную модель, которую будет использовать getTodoItemMininmal.

...