Spring mvc @RequestMapping заголовки могут принимать только одно значение?
это будет работать:
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"})
{
.......
}
Если я добавлю еще одно значение в него, как показано ниже, оно будет терпеть неудачу и скажет мне: "Указанный метод HTTP не разрешен для запрашиваемого ресурса (метод запроса" POST "не поддерживается)"
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json","content-type=application/xml"})
{
.......
}
Я предполагаю, что Spring считает, что два значения типа контента являются "и" отношениями, но вместо этого я хочу, чтобы они были "или". Какие-либо предложения? Спасибо!
Ответы
Ответ 1
Вы пробовали сделать content-type=application/json,application/xml
?
Не уверен, что это сработает, но поставив два заголовка content-type
там, я думаю, победит только один.
ИЛИ
можно использовать две аннотации RequestMapping
для одного и того же метода с разными заголовками content-type
?
Ответ 2
Если вы используете Spring 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) {
// ...
}
заменяется на:
@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
Кроме того, если вам нужны несколько типов мультимедиа. Вы можете сделать следующее:
produces={"application/json", "application/xml"}
consumes={"application/json", "application/xml"}