7 ответов:
предположим, вы хотите написать url, чтобы получить некоторый заказ, вы можете сказать
www.mydomain.com/order/123где 123-orderId.
Итак, теперь url, который вы будете использовать в Spring MVC controller, будет выглядеть как
/order/{orderId}теперь идентификатор заказа может быть объявлен переменной пути
@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET) public String getOrder(@PathVariable String orderId){ //fetch order }если вы используете url www.mydomain.com/order/123, то переменная orderId будет заполнена значением 123 к весне
также обратите внимание, что PathVariable отличается от requestParam как pathVariable является частью URL. Тот же url с помощью запроса param будет выглядеть как
www.mydomain.com/order?orderId=123
взгляните на приведенный ниже фрагмент кода.
@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; }надеюсь, что это поможет в создании вашего кода. Ашу
если у вас есть url с переменными пути, пример www.myexampl.com/item/12/update где 12-идентификатор, а create-переменная, которую вы хотите использовать для указания выполнения для intance при использовании одной формы для обновления и создания, Вы делаете это в своем контроллере.
@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"; }
@PathVariable используется для извлечения значения из url
например : чтобы получить какой-то вопрос
www.stackoverflow.com/questions/19803731тут какой-то вопрос
idпередается как параметр в urlтеперь, чтобы получить это значение в
controllerвсе, что вам нужно сделать, это просто передать @PathVariable и в параметре метода@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET) public String getQuestion(@PathVariable String questionId){ //return question details }
предположим, вы нажмете url как www.example.com/test/111 . Теперь вам нужно получить значение 111 (которое является динамическим) для вашего метода контроллера. в то время вы будете использовать @PathVariable следующим образом :
@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET) public void test(@PathVariable String testvalue){ //you can use test value here }таким образом, значение переменной извлекается из url
@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
взгляните на приведенный ниже фрагмент кода.
@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); }Если вы хотите, чтобы полный проект, чтобы увидеть, как он работает, то загрузите его из ссылки ниже:-
Comments