我有一个rest端点(spring-boot-1.3.0-RELEASE -〉spring-core-4.2.4.RELEASE),它接受一个多示例字符串参数
@RequestMapping(value = "/test", method = RequestMethod.GET)
public ResponseEntity<Object> getTest(@RequestParam(value = "testParam", required = false) String[] testParamArray) {}
/test?testParam= => testParamArray has length 0
/test?testParam=&testParam= => testParamArray has length 2 (two empty string items)
我希望第一个例子能在数组中得到一个空的sting元素,但实际上一个也没有。有什么想法可以实现吗?
2条答案
按热度按时间epfja78i1#
Spring的
StringToArrayConverter
负责这个转换,如果你看一下它的convert
方法:基本上,它接受输入(在您的例子中为空
String
),用逗号将其拆分,并返回一个包含分解的String
的值的数组。拆分空String
的结果当然是空Array
。当您传递两个同名参数时,将调用
ArrayToArrayConverter
,它的行为与您预期的一样,并返回一个包含两个空String
的数组。如果要禁用默认的
String
到Array
行为,则应注册另一个Converter
,将空String
转换为单个元素Array
。aiazj4mn2#
为了补充阿里的正确答案...
您可以注册一个
Converter
,该Converter
指示Spring将空字符串视为一个数组,该数组包含WebMvcConfigurer
bean的addFormatters
方法中的空字符串。