requestparam requestmapping name multiple example java spring spring-mvc

java - name - SpringMVC RequestMapping para los parámetros GET



requestparam name (6)

Debería escribir un tipo de plantilla en @RequestMapping :

http://localhost:8080/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}

Ahora defina su método comercial de la siguiente manera:

@RequestMapping("/userGrid?_search=${search}&nd=${nd}&rows=${rows}&page=${page}&sidx=${sidx}&sord=${sord}") public @ResponseBody GridModel getUsersForGrid( @RequestParam(value = "search") String search, @RequestParam(value = "nd") int nd, @RequestParam(value = "rows") int rows, @RequestParam(value = "page") int page, @RequestParam(value = "sidx") int sidx, @RequestParam(value = "sort") Sort sort) { ............... }

Entonces, framework mapeará ${foo} al apropiado @RequestParam .

Como sort puede ser asc o desc, lo definiría como enum:

public enum Sort { asc, desc }

La primavera trata con enumeraciones muy bien.

¿Cómo hacer que RequestMapping maneje los parámetros GET en la url? Por ejemplo, tengo esta url

http://localhost:8080/userGrid?_search=false&nd=1351972571018&rows=10&page=1&sidx=id&sord=desc

(desde jqGrid)

¿Cómo debería ser mi RequestMapping? Quiero obtener los parámetros usando HttpReqest

Intenté esto:

@RequestMapping("/userGrid") public @ResponseBody GridModel getUsersForGrid(HttpServletRequest request)

pero no funciona.


Esto funciona en mi caso:

@RequestMapping(value = "/savedata", params = {"textArea", "localKey", "localFile"}) @ResponseBody public void saveData(@RequestParam(value = "textArea") String textArea, @RequestParam(value = "localKey") String localKey, @RequestParam(value = "localFile") String localFile) { }


Esto obtendrá TODOS los parámetros de la solicitud. Para fines de depuración solamente:

@RequestMapping (value = "/promote", method = {RequestMethod.POST, RequestMethod.GET}) public ModelAndView renderPromotePage (HttpServletRequest request) { Map<String, String[]> parameters = request.getParameterMap(); for(String key : parameters.keySet()) { System.out.println(key); String[] vals = parameters.get(key); for(String val : vals) System.out.println(" -> " + val); } ModelAndView mv = new ModelAndView(); mv.setViewName("test"); return mv; }


Puede agregar @RequestMapping manera:

@RequestMapping("/userGrid") public @ResponseBody GridModel getUsersForGrid( @RequestParam("_search") String search, @RequestParam String nd, @RequestParam int rows, @RequestParam int page, @RequestParam String sidx) @RequestParam String sord) {


Si está dispuesto a cambiar su uri, también puede usar PathVariable .

@RequestMapping(value="/mapping/foo/{foo}/{bar}", method=RequestMethod.GET) public String process(@PathVariable String foo,@PathVariable String bar) { //Perform logic with foo and bar }

NB: el primer foo es parte del camino, el segundo es el PathVariable


Utilice @RequestParam en los argumentos de su método para que Spring pueda vincularlos, también use la matriz @RequestMapping.params para reducir el método que usará la primavera. Código de muestra:

@RequestMapping("/userGrid", params = {"_search", "nd", "rows", "page", "sidx", "sort"}) public @ResponseBody GridModel getUsersForGrid( @RequestParam(value = "_search") String search, @RequestParam(value = "nd") int nd, @RequestParam(value = "rows") int rows, @RequestParam(value = "page") int page, @RequestParam(value = "sidx") int sidx, @RequestParam(value = "sort") Sort sort) { // Stuff here }

De esta forma, Spring solo ejecutará este método si TODOS LOS PARÁMETROS están presentes, salvándole de la verificación nula y cosas relacionadas.