Контроллер Spring rest - определение схемы XML

Цель

  • Метод вставки контроллера Spring rest запрашивается с телом xml.
  • Тело xml проверяется файлом локального сервера xsd.
  • Jaxb демаршалирует xml в указанный класс.

Пустая ситуация

Весенняя версия: 4.2.4.RELEASE

@RestController
public class DummyController {
    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)
    public Dummy insert(@RequestBody Dummy dummy) {
        return dummy;
    }
}

@XmlRootElement(name = "dummy")
@XmlAccessorType(XmlAccessType.FIELD)
public class Dummy {
    @XmlElement private ADummy aDummy;
    @XmlElement private BDummy bDummy;
}

@XmlRootElement(name = "alpha")
@XmlAccessorType(XmlAccessType.FIELD)
public class ADummy {
    @XmlElement private String value;
}

@XmlRootElement(name = "beta")
@XmlAccessorType(XmlAccessType.FIELD)
public class BDummy {
    @XmlElement private String value;
}

И файл xsd более строгий, чем правила Jaxb для классов.

Текущий результат и проблема

  • Контроллер Spring rest получает запрос и демаршалируется в фиктивный экземпляр

  • Проблема: не удается проверить с помощью xsd

Я пытался

1 - Я попытался указать схему в spring-servlet.xml, как было предложено здесь

<bean id = "marshaller" class = "org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name = "classesToBeBound" value = "Dummy"/>
    <property name = "schema" value = "stb.xsd"/>
</bean>

Уточните, что "невозможно проверить с помощью xsd". Что именно вы делаете (код), что именно не работает, какие именно исключения или ошибки вы получаете.

lexicore 26.03.2018 19:32

Я просто хочу сказать, что я пока не придумал никакого решения

Neok 26.03.2018 21:46

Как вы создаете своего демаршаллера? Вам просто нужно установить схему, когда вы его создаете.

lexicore 26.03.2018 21:48

Spring делает это с помощью @RequestBody

Neok 26.03.2018 22:20

Но все же где-то есть конфигурация или автоконфигурация. Вам нужно перенастроить демаршаллер.

lexicore 26.03.2018 22:21

Это то, что я безуспешно пробовал в весеннем сервлете

Neok 26.03.2018 22:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
395
0

Другие вопросы по теме