Я хочу выборочно сериализовать поля на основе запроса и пользователя.Как сообщить JAXB, какие поля сериализуются во время выполнения?
Например, пользователю admin будет предоставлен XML с некоторыми дополнительными полями. В то время как обычный пользователь получит XML без этих полей.
Во-вторых, в настоящее время я использую @XmlIDREF
, чтобы предотвратить ненужное расширение ссылочных объектов или коллекций.
Но иногда пользователю могут понадобиться эти детали. Сделать второй запрос для ссылочного объекта нежелательно. Я хочу, чтобы пользователь сообщил серверу, что атрибут XYZ должен быть расширен (т. Е. Включать полный объект, а не только его ссылку)
Учитывая пользователя и запрос на основе бизнес-логики, я могу определить, какие поля должны быть сериализованы , Теперь, как мне передать эту информацию JAXB?
Насколько это возможно, я не хочу создавать XSD. Обратите внимание, что параметры запроса являются динамическими. Какие поля для сериализации определяются во время выполнения. Поэтому я не могу использовать то, что должно быть жестко закодировано - например, @Transient
или @XmlIDREF
аннотации.
Спасибо, это приятно. Работает хорошо. Однако у меня есть проблема с маршалингом полей ID в подграфе. У меня есть список объектов класса A (завернутый в JaxbList). Каждый объект класса А, в свою очередь, имеет список объектов класса В. Я создаю граф объектов, перейдя в JaxbList.class. Из этого я создаю подграф для B. A сериализуется, как ожидалось, но поле идентификатора подграфа не сериализуется. Если я попытаюсь выполнить маршалинг, удерживая B в качестве основного графика (вместо подграфа), тогда поле ID сериализуется, как ожидалось. Любая идея, что может быть неправильным? Я пробовал комментировать аннотацию XmlID. Это все еще происходит. – Dojo