Spring MVC Ajax: передача пустого массива в контроллер Ajax - PullRequest
1 голос
/ 03 июля 2019

У меня есть следующее, что хорошо работает при получении непустого массива,

$.ajax({
  url: "ajaxController",
  dataType: "json",
  type: "get",
  data: {
       'term': request.term,
       'exclude': ["45","66"]
  },

Controller (обратите внимание на [] в значении RequestParam - результат передается в виде строки []):

public List<KeyValueBean> getChoices(String term, 
                                     @RequestParam(value = "exclude[]") 
                                        String[] exclude)  {
}                               

Но если я пропущу пустой массив в том же коде, что иногда случается, он ломается:

'exclude': []

или, альтернативно,

'exclude': JSON.stringify([])

Ошибка:

org.springframework.web.bind.MissingServletRequestParameterException: Required 
String[] parameter 'exclude[]' is not present

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Если вы обращаете внимание на ошибку, в ней говорится, что ваш параметр запроса exclude не может быть нулевым.Если вам нужно иногда отправлять пустой массив, вы можете пометить ваш параметр как необязательный (не обязательный) следующим образом:

@RequestParam(required = false, value = "exclude[]")
0 голосов
/ 03 июля 2019

Возможно, проблема в том, что вы передали свой @RequestParam с value="exclude[]", когда передаете объект с именем «exclude».

Итак, на самом деле должно быть:

public List<KeyValueBean> getChoices(String term, 
                                 @RequestParam(value = "exclude") 
                                    String[] exclude)  {
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...