Ejemplo de URL:
../get/1?attr1=1&attr2=2&attr3=3No sé los nombres de attr1, att2 y attr3.
Cuando ejecuté este código, obtengo el tamaño de 'allRequestParams' igual a 1
@RequestMapping(value = "/get/", method = RequestMethod.GET) public String search( @RequestParam Map<String,Integer> allRequestParams) { System.out.println(allRequestParams.size()); return ""; }¿Es un problema con Spring o escribí un código incorrecto? ¡Gracias!
Si está pasando los atributos de la solicitud en forma de parámetros de consulta, puede obtenerlos directamente usando HttpServletRequest. Pase como parámetro a su método y utilícelo como httpServletRequest.getParameterMap(). Esto devolverá un java.util.Map inmutable de parámetros de solicitud. Cada entrada del mapa tendrá la clave de tipo String y el valor de tipo String[]. Entonces, si solo tiene un valor, puede acceder directamente como entrada. getValue () [0] le daría el primer valor. El código se parece a esto para acceder a los valores.
@RequestMapping(value = "/get/", method = RequestMethod.GET) public String search(HttpServletRequest httpServletRequest) { Map<String, String[]> requestParameterMap = httpServletRequest.getParameterMap(); for(String key : requestParameterMap.keySet()){ System.out.println("Key : "+ key +", Value: "+ requestParameterMap.get(key)[0]); } return ""; }Espero que esto ayude !!
Puede definir un POJO que contenga un mapa. Algo como a continuación:
@RequestMapping(value = "/get/{searchId}", method = RequestMethod.POST) public String search( @PathVariable("searchId") Long searchId, @RequestParam SearchRequest searchRequest) { System.out.println(searchRequest.getParams.size()); return ""; } public class SearchRequest { private Map<String, String> params; }Objeto de solicitud:
"params":{ "birthDate": "25.01.2011", "lang":"en" }Para su ejemplo específico, ¿no le falta un @PathVariable para acceder a la variable Path con el valor "1" en su URL de ejemplo?
@RequestMapping(value = "/get/{searchId}", method = RequestMethod.GET) public String search( @PathVariable("searchId") Long searchId, @RequestParam Map<String,String> allRequestParams) { System.out.println(allRequestParams.size()); return ""; }Además, ¿estás importando java.util.Map?