Пользовательское преобразование аргументов в обработчике Spring-MVC Rest api - PullRequest
1 голос
/ 06 декабря 2011

Мы создаем простой API отдыха, используя Spring Web MVC.Один из наших обработчиков принимает в качестве параметра запроса int с именем ID.

@RequestMapping(value="/requestEntity",
    method=RequestMethod.GET)
public ModelMap getEntity(
    @PathVariable(value="id")final Integer id,
    HttpServletResponse response) throws IOException  {

Я знаю, что объект запроса имеет значения параметров запроса в виде строк (name1 = value1 & name2 = 22) и что обработчик будет магическим образом получатьint, когда он имеет ID в качестве параметра.

"/requestEntity", id="5" -> getEntity(5);

К сожалению, если мы отправим значение "1 2 3" в качестве входных данных, мы получим в качестве аргумента число 123. Если мы отправим "5; 123"мы получаем 5 в качестве аргумента.

"/requestEntity", id="1 2 3" -> getEntity(123); // WRONG -- we want to throw an error
"/requestEntity", id="5;123" -> getEntity(5);   // ALSO WRONG

Насколько я могу судить, Spring выполняет какое-то преобразование, чтобы превратить значения строковых параметров в аргумент int, который нужен обработчику.Как мы можем реализовать наш собственный конвертер аргументов?

1 Ответ

0 голосов
/ 06 декабря 2011

Это похоже на проблему, подобную этому вопросу: Spring @MVC и проверка @RequestParam . Есть два ответа / решения, которые могут работать для вас, я бы попробовал это сначала:

@RequestMapping
public void handleRequest( HttpServletRequest request ) {
    int page = ServletRequestUtils.getIntParameter(request, "page", 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...