在拦截器中获取请求参数,[Ljava.lang.String; cannot be cast to java.lang.String报错

Map<String,Object> parametersmap=invocation.getInvocationContext().getParameters();//获取请求参数

Set<String> parametersset=parametersmap.keySet();

for(String key:parametersset){

      System.out.println(key+":"+parametersmap.get(key))

}

报错[Ljava.lang.String; cannot be cast to java.lang.String

原因在于parametersmap.get(key)得到的参数并不是String类型,而时String[]数组形式,因此需要对任一个key对应的value进行遍历。

后记:应该使用Map<String,String[]> parametersmap = request.getParameterMap();

这个更清楚。明显返回的value值无论是否多值,全部默认封在String[]里,而不是String。