我使用Spring @RESTController作为我的REST Web服务。而不是返回ModelAndView的对象我试图在我的rest方法中返回ResponseEntity对象的对象。对于Strgin类型的响应,当我使用Jaxbobject构建ResponseEntity时它正在工作,它给了我HTTP错误406
@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 :(得分: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 />
时,应自动设置所有内容。自动设置会检测哪些库可用(jaxb,json等)。
根据响应代码(406),您在服务器端手动配置了错误,或者客户端不支持xml作为响应类型。