Ошибка 400 при получении данных из параметров URL в Spring MVC

#spring

#spring

Вопрос:

Я пытаюсь получить данные с URL-адреса с двумя параметрами, подобными этому:

 http://localhost:80000/xxx/xxx/tickets/search?codprovincia=28amp;municipio=110000
  

Независимо от подхода, я всегда получаю ошибку 400, но если я обращаюсь к URL-адресу без двух параметров, контроллер возвращает представление правильно (естественно, без параметров)

Это код моего контроллера:

 @Controller
@RequestMapping(value =  "/xxx" )
public class BuscadorIncidenciasController extends BaseControllerWeb {

    @RequestMapping("tickets")
    public String tickets(Model model, @RequestParam ("codprovincia") String codprovincia, @RequestParam ("municipio") String municipio, HttpServletRequest request) throws NoAjaxException {

        //...
        return CONST.JSP_VIEW;
    }

...}
  

Дополнительная информация: если я использую этот URL-адрес:

 http://localhost:9081/xxx/xxx/tickets/search/28/790000
  

И этот код:

 @Controller
@RequestMapping(value =  "/xxx" )
public class BuscadorIncidenciasController extends BaseControllerWeb {

   @RequestMapping(value = "buscar/{codprovincia}/{municipio}", method = RequestMethod.GET)
   public String buscar(@PathVariable Integer codprovincia, @PathVariable Integer municipio ,Model model, HttpServletRequest request) throws NoAjaxException {

        //...
        return CONST.JSP_VIEW;
    }

...}
  

Он правильно получает параметры. Проблема в том, что я должен использовать первый URL-адрес. Я рассмотрел похожие вопросы о похожих проблемах и внедрил решения этих проблем, но я получаю ошибку 400 независимо от того, что я пытаюсь (добавить значение =»xxx =, требуется = false и другие предложения.)

Ответ №1:

Для параметра запроса необходимо явно добавить атрибут ‘name’

 @RequestParam(name = "codprovincia"), @RequestParam (name = "municipio")
  

Нет необходимости запрашивать HttpServletRequest, если у вас нет причин

Кроме того, в вашем методе «tickets» сопоставление запросов не соответствует вашему URL-пути. Я думаю, что это должно быть

 @RequestMapping("/xxx/tickets/search")
  

Приветствия!

Комментарии:

1. Атрибут ‘name’ решил проблему, я постоянно пытался использовать ‘value’! Спасибо!