Мы создаем простой 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, который нужен обработчику.Как мы можем реализовать наш собственный конвертер аргументов?