Primavera mvc @ PathVariable


¿Puede darme una breve explicación y una muestra de cómo usar @PathVariable en spring mvc? Por favor, incluya en cómo se escribe la url?
Estoy luchando en conseguir la url correcta para mostrar la página jsp. Gracias.

 96
Author: agpt, 2013-11-06

7 answers

Supongamos que desea escribir una url para obtener algún orden, puede decir

www.mydomain.com/order/123

Donde 123 es OrderID.

Así que ahora la url que usará en spring mvc controller se vería como

/order/{orderId}

Ahora el id de orden se puede declarar como variable de ruta

@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}

Si utiliza url www.mydomain.com/order/123, entonces la variable OrderID será poblada por el valor 123 por spring

También tenga en cuenta que PathVariable difiere de RequestParam ya que PathVariable es parte de URL. La misma url usando request param se vería como www.mydomain.com/order?orderId=123

API DOC
Referencia Oficial de Primavera

 187
Author: coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-14 20:59:36

Echa un vistazo al siguiente fragmento de código.

@RequestMapping(value="/Add/{type}")
public ModelAndView addForm(@PathVariable String type ){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("addContent");
    modelAndView.addObject("typelist",contentPropertyDAO.getType() );
    modelAndView.addObject("property",contentPropertyDAO.get(type,0) );
    return modelAndView;
}

Espero que te ayude a construir tu código. ashu

 9
Author: Ashu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-09 22:19:20

Si tiene url con variables de ruta, ejemplo www.myexampl.com/item/12/update donde 12 es el id y create es la variable que desea usar para especificar su ejecución para intance al usar un solo formulario para hacer una actualización y crear, lo hace en su controlador.

   @RequestMapping(value = "/item/{id}/{method}" , RequestMethod.GET)
    public String getForm(@PathVariable("id") String itemId ,  @PathVariable("method") String methodCall , Model model){
  if(methodCall.equals("create")){
    //logic
}
 if(methodCall.equals("update")){
//logic
}

return "path to your form";
}
 5
Author: ochiWlad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-13 15:27:54

@PathVariable se usa para obtener el valor de la url

Por ejemplo: Para obtener alguna pregunta

www.stackoverflow.com/questions/19803731

Aquí se pasa alguna pregunta id como parámetro en url

Ahora para obtener este valor en controller todo lo que tiene que hacer es pasar @PathVariable y en el parámetro de método

@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
    public String getQuestion(@PathVariable String questionId){
    //return question details
}
 2
Author: Anway Bhutkar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-10 08:58:28

Supongamos que usted golpea una url como www.example.com/test/111 . Ahora tiene que recuperar el valor 111 (que es dinámico) a su método controlador. En ese momento estará usando @PathVariable de la siguiente manera:

@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}

ASÍ que el valor de la variable se recupera de la url

 0
Author: Gagan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-28 07:56:41
@RequestMapping(value = "/download/{documentId}", method = RequestMethod.GET)
public ModelAndView download(@PathVariable int documentId) {
    ModelAndView mav = new ModelAndView();
    Document document =  documentService.fileDownload(documentId);
    mav.setViewName("download");
    mav.addObject("downloadDocument", document);

    return mav;
}

@RequestMapping (value = " / download / { documentId}" == @PathVariable int documentId

 0
Author: Byeon0gam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-26 06:55:06

Echa un vistazo al siguiente fragmento de código.

@RequestMapping(value = "edit.htm", method = RequestMethod.GET) 
    public ModelAndView edit(@RequestParam("id") String id) throws Exception {
        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute("user", userinfoDao.findById(id));
        return new ModelAndView("edit", modelMap);      
    }

Si quieres que el proyecto completo vea cómo funciona, descárgalo desde el siguiente enlace: -

Proyecto userInfo en GitLab

 -2
Author: Saurabh Juneja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 20:13:54