我使用Spring @RESTController作为REST REST服务。我没有返回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);
}
}
发布于 2014-01-31 04:12:39
@RestController
注释已经暗示了所有请求处理方法的@ResponseBody
注释,这也是它的目的之一(它可以避免将所有这些注释放在那里)。所以你可以/应该把它移除。
方法的返回值的处理由'HandlerMethodReturnValueHandlerand the specific one which should handle this delegates to a
HttpMessageConverter. It selects a specific
HttpMessageConverterbased 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作为响应类型。
https://stackoverflow.com/questions/21478347
复制