Considérese el siguiente método controlador:¿Cómo evitar el enlace de parámetros desde la interpretación de comas en Spring 3.0.5?
@RequestMapping(value = "/test", method = RequestMethod.GET)
public void test(@RequestParam(value = "fq", required = false) String[] filterQuery) {
logger.debug(fq = " + StringUtils.join(filterQuery, "|"));
}
Aquí está la salida para diferentes fq
combinaciones:
/test?fq=foo
resultados enfq = foo
/test?fq=foo&fq=bar
resultados enfq = foo|bar
/test?fq=foo,bar
resultados enfq = foo|bar
/test?fq=foo,bar&fq=bash
resultados enfq = foo,bar|bash
/test?fq=foo,bar&fq=
resultados enfq = foo,bar|
Ejemplo 3 es el problema. Espero (quiero/necesito) que salga fq = foo,bar
.
He intentado escapar de la coma con \
y usando %3C
pero niether trabajo.
Si miro a la versión del objeto HttpServletRequest
:
String[] fqs = request.getParameterValues("fq");
logger.debug(fqs = " + StringUtils.join(fqs, "|"));
imprime el resultado esperado: fqs = foo,bar
. Entonces, el "problema" es con el enlace de datos de Spring.
pude pasar por la primavera de la unión y el uso de HttpServletRequest
pero realmente no quieren que yo estoy usando un bean de respaldo en mi código real (lo mismo está ocurriendo) y no desea volver a implementar la funcionalidad de enlace. Espero que alguien pueda proporcionar una forma simple de prevenir este comportamiento mediante el escape o algún otro mecanismo.
TIA
ACTUALIZACIÓN: Me ha publicado esto Q en Twitter y recibió una respuesta diciendo la salida esperada aparece con la primavera 3.0.4.RELEASE. He confirmado que este es el caso y, por lo tanto, es una solución temporal. Continuaré y registraré esto como un error en el sistema Spring JIRA. Si alguien puede solucionar el problema o corregirlo con 3.0.5, aceptaré su respuesta.
Conectado como error: http://jira.springsource.org/browse/SPR-7963 – nickdos
Le sugiero que agregue su resolución como respuesta a su propia pregunta para que quede claro para los demás que ha encontrado una solución. –
Gracias por la sugerencia Phillip. Resulta que la solución de usar 3.0.4 funciona para @RequestMapping pero NO soluciona el mismo problema cuando se vincula a un bean de respaldo de formulario. Aún no tengo una solución para mi aplicación. Todavía no tengo un comentario/actualización sobre el tema de Spring Jira, creo que es un poco flojo. – nickdos