2016-11-11 4 views
1

У меня есть XML, который подается в контроллер REST, и я использую аннотацию @RequestBody, чтобы преобразовать ее в объект Java. Мне нужно сохранить весь XML в столбце базы данных в дополнение к некоторым конкретным элементам Java-объекта. Я собираю объект Java явно, чтобы выполнить это, и это, кажется, дублирует работу. Есть ли способ получить необработанный XML в дополнение к анализируемому объекту при использовании аннотации @RequestBody?Объект Marshall, возвращаемый @RequestBody

ответ

0

Да, есть. Скажем, это ваш метод контроллера:

public Response yourControllerMethod(@RequestBody YourDTO dto) { 

Просто измените @RequestBody типа параметра в строку, и вы получите необработанное тело запроса:

public Response yourControllerMethod(@RequestBody String rawPayload) { 

Или вы даже можете получить как:

public Response yourControllerMethod(@RequestBody YourDTO dto, @RequestBody String rawPayload) { 
+0

Получить сообщение со второй аннотацией @RequestBody. w.s.m.s.DefaultHandlerExceptionResolver: не удалось прочитать HTTP-сообщение: org.springframework.http.converter.HttpMessageNotReadableException: не удалось прочитать документ: поток закрыт; Вложенное исключение - java.io.IOException: Stream closed –

+0

Является ли это всей stacktrace? И какая версия Spring Boot вы наделали? – jannis

+0

org.springframework.http.converter.HttpMessageNotReadableException: не удалось прочитать документ: Stream закрыт; вложенное исключение: java.io.IOException: поток закрыт \t на org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters (AbstractMessageConverterMethodArgumentResolver.java:227) ~ [spring-webmvc-4.2.4.RELEASE. баночка: 4.2.4.RELEASE] \t в org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters (RequestResponseBodyMethodProcessor.java:147) ~ [весенне-webmvc-4.2.4.RELEASE.jar –