java - Spring framework REST multivalue request parameter empty array -


i have rest endpoint (spring-boot-1.3.0-release -> spring-core-4.2.4.release) takes multiple instance string parameter

@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) 

i expected first case single empty sting element in array there none. ideas on how achieve this?

spring's stringtoarrayconverter responsible conversion. if take @ convert method:

public object convert(object source, typedescriptor sourcetype, typedescriptor targettype) {         if (source == null) {             return null;         }         string string = (string) source;         string[] fields = stringutils.commadelimitedlisttostringarray(string);         object target = array.newinstance(targettype.getelementtypedescriptor().gettype(), fields.length);         (int = 0; < fields.length; i++) {             string sourceelement = fields[i];             object targetelement = this.conversionservice.convert(sourceelement.trim(), sourcetype, targettype.getelementtypedescriptor());             array.set(target, i, targetelement);         }         return target; } 

basically, takes input (empty string in case), split comma , return array values of exploded string. result of splitting empty string, of course, empty array.

when pass 2 parameters same name, arraytoarrayconverter called, behaves expect , returns array 2 empty strings.

if want disable default string array behavior, should register converter converts empty string single element array.


Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -