Проверять аннотации привязки javax, а не схему - PullRequest
4 голосов
/ 21 августа 2010

Используется последняя реализация JAXB Sun, но можно полагаться на XJC для создания правильных аннотаций. Есть несколько примеров, когда XJC не прикреплял аннотации XMLElement или XMLAttribute без логической причины. Плюс есть проблемы с логикой, лежащей в основе плагинов. В любом случае, я хочу отказаться от идеи написания схем только для создания POJO, а затем загружать схемы только для проверки.

У кого-нибудь есть способ напрямую проверить аннотации привязки Javax? Увидел крутой обходной путь в: как я могу unmarshall в jaxb и наслаждаться проверкой схемы без использования явного файла схемы

Где схема была создана динамически только для проверки. Ищете подход, который идет прямо против аннотаций (например, Hibernate Validator и JSR 303, но специально для аннотаций Javax bind)?

1 Ответ

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

Нет стандартной проверки, которая может быть выполнена с аннотациями JAXB.По правде говоря, по большей части это связано с тем, что типизированная природа объектной модели уменьшает количество недопустимых вводимых данных (например, если у моего элемента customer есть дочерний элемент address, то у моего объекта Customer есть свойство Address, и вы можете 'установить в этом свойстве что-либо, кроме объекта Address).

Где вы можете захотеть проверить - ограничить коллекцию определенным количеством элементов (потому что у вас maxOccurs = "10") или строкуконкретная длина (потому что у вас есть фасет схемы).JAXB 2.X (JSR 222) не генерирует их в вашей объектной модели по умолчанию (хотя вы, безусловно, можете добавить их самостоятельно, как это делают люди при использовании JPA), используя JSR 303 и запуская валидатор.

ДругоеВопросы, связанные с вашим вопросом:

  1. Если у вас возникли проблемы с инструментом XJC, рассмотрите возможность регистрации ошибки:

  2. Если аннотации отсутствуют, по умолчанию используется значение @XmlElement, поэтому некоторые из этих аннотаций могут отсутствовать по этой причине.Аннотация обычно добавляется только для корректировки имени или информации о пространстве имен.

  3. С JAXB (так же, как JPA) вы можете начать с POJO.Аннотации JAXB могут быть добавлены для настройки представления XML.

...