Привязать несколько параметров запроса к одному объекту в Spring 3 - PullRequest
4 голосов
/ 03 июня 2010

Я не могу найти способ привязать несколько аргументов и заголовков к одному параметру запроса, используя аннотации в Spring 3.

Например, допустим, я получаю этот запрос:

Headers:
Content-type: text/plain;

POST Body:
Name: Max

Теперь я хочу, чтобы все это таинственным образом связывалось с этим объектом:

class NameInfo {
    String name;
}

Используя некоторый код, подобный этому:

String getName() {
    if ("text/plain".equals(headers.get("content-type"))) {
        return body.get("name");
    } else if ("xml".equals(headers.get("content-type")) {
        return parseXml(body).get("name");
    } else ...
}

Чтобы в конце я смог использовать:

@RequestMapping(method = RequestMethod.POST)
void processName(@RequestAttribute NameInfo name) {
...
}

Есть ли способ достичь чего-то похожего на то, что мне нужно?

Заранее спасибо.

1 Ответ

2 голосов
/ 03 июня 2010

@RequestBody это то, что вы хотите, я думаю. См. Весенние документы об этом здесь .

Параметр метода @RequestBody аннотация указывает, что метод параметр должен быть привязан к значению тела HTTP-запроса.

Вы преобразовываете тело запроса в аргумент метода с помощью HttpMessageConverter. HttpMessageConverter несет ответственность для конвертации из HTTP-запроса сообщение объекту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...