下面就是解决Springboot 2中的@RequestParam接收数组异常问题的完整攻略:
问题描述
在使用Springboot 2的@Controller或@RestController接口接收请求参数时,如果使用@RequestParam注解接收数组参数时,有时候会出现异常,例如:
Failed to convert value of type java.lang.String[] to required type java.util.List for parameter arr;
产生这个异常的原因是@RequestParam不能直接接收数组类型的参数,而是需要将数组转换成List或其他支持的类型才能接收。
解决方法
解决办法一
在使用@RequestParam接收数组参数时,通过使用@RequestParam注解的value属性来指定参数名,并将其value值设置为空数组,这样就能够避免上述异常的出现。
例如:
@GetMapping("/test")
public String test(@RequestParam(value="arr", defaultValue="") String[] arr) {
// do something
return "success";
}
在调用上述接口时,可以通过URL中添加多个同名参数来传递数组参数,例如:
http://localhost:8080/test?arr=1&arr=2&arr=3
解决办法二
在使用@RequestParam注解接收数组参数时,可以传递一个List类型的参数,然后将其转换成数组。
例如:
@GetMapping("/test")
public String test(@RequestParam(value="arr", defaultValue="") List<String> arrList) {
String[] arr = arrList.toArray(new String[arrList.size()]);
// do something
return "success";
}
在调用上述接口时,可以通过URL中添加多个同名参数来传递数组参数,例如:
http://localhost:8080/test?arr=1&arr=2&arr=3
总结
通过以上两种方法,就可以完美解决Springboot 2的@RequestParam接收数组异常问题。第一种方法比较简单,但缺点是不能直接接收List类型的参数。第二种方法可以接收List类型的参数,并且通过List.toArray()方法将其转换成数组,使用起来更灵活。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决Springboot 2 的@RequestParam接收数组异常问题 - Python技术站