У меня есть контроллер, на который я хочу отправить сообщение XML. Используя XSD для сообщения, я создал объекты Java с помощью плагина cxf-xjc-plugin. Корневой элемент выглядит следующим образом:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MessageType", propOrder = {"header", "moreHere"})
public class MessageType {
@XmlElement(name = "Header", required = true)
protected HeaderEntiteitType header;
// more code here
}
Я создал контроллер для получения такого сообщения:
@RestController
@RequestMapping("calc")
public class AppController {
@PostMapping("endpoint")
@ResponseBody
public Response doTheThing(@RequestBody MessageType message) {
return doThing(message);
}
}
У меня сложилось впечатление, что Spring должен автоматически работать, если я отправляюHTTP-сообщение с Content-Type application/xml
. Поэтому я отправляю следующее сообщение:
<Message><Header>something goes here</Header></Message>
Но я получаю объект MessageType
, который имеет значения null
для всех своих атрибутов. Я полагаю, что это связано с чем-то связанным с @XmlRootElement
, поскольку у меня его нет, и нигде не указывается, что объект MessageType
должен искать элемент с именем Message
. Поэтому я попытался добавить @XmlRootElement(name = "Message")
к MessageType
объекту, чтобы проверить, работает ли он, но это ничего не меняет в результате.
Где я ошибаюсь?