sábado, 24 de noviembre de 2012

Problema al obtener un String del mapa de parametros de la request

Me he encontrado con este curioso y extraño error aunque sencillo de arreglar. Y es que intento obtener los parametros de una url y parece que se hace un lio al castear de String a String. El caso es el siguiente:

Tengo un filtro a los action que comprueba determinado parametro mandado por la url. Al intentar obtener el parametro de la url con el siguiente código:
final String token = (String) invocation.getInvocationContext().getParameters().get("token")
Me daba el siguiente error:
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
Y esto se supone que es porque el getParameter de la request devuelve un Map y no un Map. Por lo que debemos castear ese mapa y obtener el string de la primera posición del array.
final Map parameters = invocation.getInvocationContext().getParameters();
final String token = ((String[]) parameters.get("token"))[0];
pd: Atentos mi ejemplo al ser codigo perteneciente a un interceptor de spring no hace uso del request.getParameterMap() pero al ejecutar tendrás el mismo problema.

No hay comentarios:

Publicar un comentario