Цель
Пустая ситуация
Весенняя версия: 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>
Я просто хочу сказать, что я пока не придумал никакого решения
Как вы создаете своего демаршаллера? Вам просто нужно установить схему, когда вы его создаете.
Spring делает это с помощью @RequestBody
Но все же где-то есть конфигурация или автоконфигурация. Вам нужно перенастроить демаршаллер.
Это то, что я безуспешно пробовал в весеннем сервлете




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