2014-01-31 4 views
1

Я использую Spring @RESTController для моего веб-сервиса REST. вместо того, чтобы возвращать объект ModelAndView, я пытаюсь вернуть объект ResponseEntity в мой метод отдыха. для типа Strgin ответа он работает ут когда я строю ResponseEntity с Jaxbobject он дает мне ошибку HTTP 406
Spring 4 RestController - Как вернуть объект jaxb с ResponseEntity

@RestController 
@RequestMapping(value="/service") 
public class MyController { 
    public @ResponseBody ResponseEntity<String> getDashBoardData() throws JAXBException { 
    // Some Operation 
     return new ResponseEntity<String>(myStringXML, responseHeaders, HttpStatus.OK); 
    } 
} 

Ниже не работает

@RestController 
@RequestMapping(value="/service") 
public class MyController { 
    public @ResponseBody ResponseEntity<MyJaxbClass> getDashBoardData() throws JAXBException { 
    // Some Operation 
     return new ResponseEntity<MyJaxbClass>(MyJaxbClassObject, HttpStatus.OK); 
    } 
} 
+0

При использовании '@ RestController' вам не нужно использовать' @ ResponseBody', что подразумевается. Также убедитесь, что вы правильно настроили mvc-материал для сортировки jaxb-объектов. –

+0

Удаление аннотации @ResponseBody не помогает. У меня есть путаница в том, что если я верну ModelAndView, то я могу указать разрешение представления для jaxb, но здесь я возвращаю ResponseEntity. Можете ли вы указать некоторый указатель на то, как я мог бы добавить распознаватель вида для ResponseEntity. –

+0

Опубликовать некоторые из ваших соответствующих конфигураций , –

ответ

3

@RestController аннотаций уже подразумевает @ResponseBody аннотация для всех методов обработки запросов, что является одной из его целей (это избавляет вас от размещения всех этих аннотаций там). Таким образом, вы можете/должны удалить его.

Обработка возвращаемого значения метода осуществляется с помощью «HandlerMethodReturnValueHandler and the specific one which should handle this delegates to a HttpMessageConverter . It selects a specific HttpMessageConverter based on the requested/supported response types for the current request and the support response types from the HandlerMethodReturnValueHandler`.

В целом при использовании @EnableWebMvc или <mvc:annotation-driven /> все должно быть настроено автоматически. Автоматическая настройка делает некоторое обнаружение, на котором доступны libs (jaxb, json и т. Д.).

На основании кода ответа (406) вы либо вручную настроили что-то не так на стороне сервера, либо клиент не поддерживает xml в качестве типа ответа.

+0

Большое спасибо, я не указал , это была проблема. –

Смежные вопросы