Spring mvc @PathVariable

后端 未结 8 793
轮回少年
轮回少年 2020-11-27 11:41

Can you give me a brief explanation and a sample in using @PathVariable in spring mvc? Please include on how you type the url?
I\'m struggling in getting th

相关标签:
8条回答
  • 2020-11-27 11:50

    @PathVariable used to fetch the value from URL

    for example: To get some question

    www.stackoverflow.com/questions/19803731
    

    Here some question id is passed as a parameter in URL

    Now to fetch this value in controller all you have to do is just to pass @PathVariable in the method parameter

    @RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
        public String getQuestion(@PathVariable String questionId){
        //return question details
    }
    
    0 讨论(0)
  • 2020-11-27 11:54

    It is one of the annotation used to map/handle dynamic URIs. You can even specify a regular expression for URI dynamic parameter to accept only specific type of input.

    For example, if the URL to retrieve a book using a unique number would be:

    URL:http://localhost:8080/book/9783827319333
    

    The number denoted at the last of the URL can be fetched using @PathVariable as shown:

    @RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
    
    public String showBookDetails(@PathVariable("ISBN") String id,
    
    Model model){
    
    model.addAttribute("ISBN", id);
    
    return "bookDetails";
    
    }
    

    In short it is just another was to extract data from HTTP requests in Spring.

    0 讨论(0)
  • 2020-11-27 11:57

    If you have url with path variables, example www.myexampl.com/item/12/update where 12 is the id and create is the variable you want to use for specifying your execution for instance in using a single form to do an update and create, you do this in your controller.

       @PostMapping(value = "/item/{id}/{method}")
        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";
        }
    
    0 讨论(0)
  • 2020-11-27 11:58

    suppose you want to write a url to fetch some order, you can say

    www.mydomain.com/order/123
    

    where 123 is orderId.

    So now the url you will use in spring mvc controller would look like

    /order/{orderId}
    

    Now order id can be declared a path variable

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

    if you use url www.mydomain.com/order/123, then orderId variable will be populated by value 123 by spring

    Also note that PathVariable differs from requestParam as pathVariable is part of URL. The same url using request param would look like www.mydomain.com/order?orderId=123

    API DOC
    Spring Official Reference

    0 讨论(0)
  • 2020-11-27 11:58

    Have a look at the below code snippet.

    @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;
    }
    

    Hope it helps in constructing your code.

    0 讨论(0)
  • 2020-11-27 11:59

    Let us assume you hit a url as www.example.com/test/111 . Now you have to retrieve value 111 (which is dynamic) to your controller method .At time you ll be using @PathVariable as follows :

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

    SO the variable value is retrieved from the url

    0 讨论(0)
提交回复
热议问题