2010-06-03 3 views
4

Я не могу понять способ связать несколько аргументов и заголовков один параметр запроса с использованием аннотаций в Spring 3.Свяжите несколько параметров запроса к одному объекту в 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) { 
... 
} 

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

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

ответ

2

@RequestBody - это то, что вы хотите, думаю. См. Документацию Spring об этом here.

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

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

Смежные вопросы