Spring MVC内容协商的每个Controller的默认mime类型

时间:2013-06-26 20:25:15

标签: spring-mvc serialization content-negotiation

有没有办法为使用Spring内容协商功能的Spring MVC控制器配置默认的mime类型,即

ControllerA - 我希望默认的mime类型是JSON,因此http://mycompany.com/myresourceA将返回JSON,如果我想要XML,我必须添加扩展名http://mycompany.com/myresourceA.xml

ControllerB - 我希望默认的mimetype是XML,因此http://mycompany.com/myresourceB将返回XML,如果我想要JSON,我必须添加扩展名http://mycompany.com/myresourceB.json

在我的contentNegotiationManagerBean中,我将默认的mime类型设置为XML,但这是一个全局配置

<property name="defaultContentType" value="application/xml" />

1 个答案:

答案 0 :(得分:0)

无法为整个控制器设置mime类型。您可以使用ResponseEntity将其设置为您的操作,作为操作方法的返回类型,然后设置该操作的响应类型。

详细了解文档:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-httpentity

使用ResposneEntity响应JSON的示例:

@RequestMapping(method=RequestMethod.GET, value="/fooBar")
    public ResponseEntity<String> fooBar2() {
      String json = "jsonResponse";
      HttpHeaders responseHeaders = new HttpHeaders();
      responseHeaders.setContentType(MediaType.APPLICATION_JSON);
      return new ResponseEntity<String>(json, responseHeaders, HttpStatus.CREATED);
    }