Использование @RequestParam вызывает ошибку в Spring 3

Я использую аннотацию @RequestParam для получения параметров запроса и использую ее для вставки значений в БД. Я настроил контроллер для перенаправления на ту же страницу, которая содержит текстовые поля для ввода пользователем значений, которые считываются с использованием аннотации @RequestParam.

Но после того, как я ввожу значения в текстовые поля и нажимаю «Отправить», выдает эту ошибку.

Ошибка обработки запроса; вложенным исключением является java.lang.IllegalArgumentException: имя для типа аргумента [java.lang.String] недоступно, и информация об имени параметра также не найдена в файле класса.

Я новичок в Spring 3 и не могу понять ошибку. Может ли кто-нибудь пролить свет на то же самое.

Заранее спасибо, Вивек


person Vivek    schedule 20.09.2011    source источник
comment
Какая версия Spring MVC? Можете ли вы показать подпись метода с аннотациями?   -  person sinuhepop    schedule 20.09.2011
comment
Я использую Spring MVC версии 3, а сигнатура метода public void insertRecords(@RequestParam String id , @RequestParam String name , @RequestParam String addr)   -  person Vivek    schedule 22.09.2011


Ответы (2)


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

  1. Имя параметра запроса должно совпадать с именем параметра метода. например Далее будет введен параметр запроса с именем «studentName» в параметр метода studentName.

    public String goToStep(@RequestParam String studentName)

  2. Имя параметра запроса должно быть указано явно, если оно не совпадает с параметром метода. Следующее введет параметр запроса «nameOfStudent» в studentName:

    public String goToStep(@RequestParam("nameOfStudent") String studentName)

Пожалуйста, опубликуйте код метода обработчика, если проблема не устранена.

person Babu Subburathinam    schedule 20.09.2011
comment
Я следовал изложенному руководству, и, соответственно, все имена параметров верны. Пожалуйста, найдите указанный ниже код метода обработчика. public void insertRecords(@RequestParam String id , @RequestParam String name , @RequestParam String addr), и соответствующий jsp имеет атрибуты id для каждого из текстовых полей в соответствии с соглашением об именах параметра метода. - person Vivek; 22.09.2011
comment
Проверьте, доступен ли параметр запроса из уровня сервлета. Например: code public void insertRecords(@RequestParam String id, @RequestParam String name, @RequestParam String addr, запрос HttpServletRequest) { System.out.println(request.getParameter(name)); // Не использовать в рабочей среде } code Если это напечатает null, значит, JSP не отправляет параметр, и публикация вашего соответствующего кода JSP будет полезна. Если он выводит ожидаемое значение, значит, проблема связана с контроллером. - person Babu Subburathinam; 23.09.2011

Я попросил версию, которую вы используете, потому что несколько дней назад столкнулся с похожей проблемой. Я использовал Spring 3.1.0.M2, и такое же исключение появилось, когда я использовал @PathVariable в проксированном @Controller.

Это было вызвано устраненной известной ошибкой. Вам просто нужно перейти на 3.0.6 или попробовать ночную сборку 3.1.0.BUILD-SNAPSHOT. Конечно, последний вариант не рекомендуется для производственной среды.

person sinuhepop    schedule 22.09.2011
comment
wwwooowwwww.... я проверю это и обновлю пробел здесь.. спасибо за информацию... :) - person Vivek; 22.09.2011
comment
Большое спасибо! Я искал эту непонятную ошибку повсюду, и если бы не ваш пост, я бы потратил много часов, пытаясь ее решить :) - person Leonti; 14.03.2012
comment
Я новичок в Spring и не знаю, как включить 3.0.6 или 3.1.0.BUILD-SNAPSHOT. Я использую Spring MVC. Какова точная зависимость/процесс для переключения на это? Спасибо @sinuhepop - person ; 07.06.2020