Spring MVC Ajax:将空数组传递给Ajax控制器

时间:2019-07-03 14:17:42

标签: java ajax spring spring-mvc

我有以下方法可以很好地接收非空数组

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

控制器(请注意RequestParam值中的[] -结果放在String []中):

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 个答案:

答案 0 :(得分:1)

如果您注意该错误,则表明您的请求参数exclude不能为null。如果有时需要发送空数组,可以通过以下方式将参数标记为可选(不需要):

@RequestParam(required = false, value = "exclude[]")

答案 1 :(得分:0)

问题可能是因为在传递名为“ exclude”的对象时,您通过value="exclude[]"传递了@RequestParam。

因此,实际上应该是:

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