Spring MVC @RequestMapping标头只能接受一个值吗?

Bob*_*obo 17 content-type spring-mvc http-headers

这将有效:

@RequestMapping(value = "/test", method = RequestMethod.POST,
    headers = {"content-type=application/json"}) {
    .......
}
Run Code Online (Sandbox Code Playgroud)

如果我像下面那样添加另一个值,那么它将失败并告诉我:

请求的资源不允许使用指定的HTTP方法(不支持请求方法'POST')

@RequestMapping(value = "/test", method = RequestMethod.POST,
    headers = {"content-type=application/json","content-type=application/xml"}) {
    .......
}
Run Code Online (Sandbox Code Playgroud)


我想这是因为Spring认为两个内容类型值具有"AND"关系,但我希望它们是"OR".

有什么建议?

谢谢!

Mas*_*erV 33

如果您使用的春季3.1.X.您可以查看使用消耗,生成 @RequestMapping注释的属性.这是关于改进的Spring博客文章:

http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/

上述文档中的代码段:

@RequestMapping(value="/pets", headers="Content-Type=application/json")
public void addPet(@RequestBody Pet pet, Model model) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

被替换为:

@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您需要多种媒体类型.您可以执行以下操作:

produces={"application/json", "application/xml"}

consumes={"application/json", "application/xml"}
Run Code Online (Sandbox Code Playgroud)


Dav*_*e G 22

你试过content-type=application/json,application/xml吗?

不确定它是否会起作用但是content-type在那里放两个标题我认为只有一个会赢.

要么

有可能RequestMapping在不同content-type标题的同一方法上使用两个注释?

  • @dave G方法只接受一个`@ RequestMapping` (3认同)
  • "content-type = application/json,application/xml"工作!谢谢! (2认同)