Ответы:
предположим, вы хотите написать URL-адрес для получения заказа, вы можете сказать
www.mydomain.com/order/123
где 123 - это идентификатор заказа.
Итак, теперь URL-адрес, который вы будете использовать в весеннем контроллере mvc, будет выглядеть как
/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-адрес, использующий параметр запроса, будет выглядеть как 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 - это переменная, которую вы хотите использовать для указания вашего выполнения, например, при использовании одной формы для обновления и create, вы делаете это в своем контроллере.
@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";
}
@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
}
Аннотация, указывающая, что параметр метода должен быть привязан к переменной шаблона URI. Поддерживается для аннотированных методов обработчика RequestMapping.
@RequestMapping(value = "/download/{documentId}", method = RequestMethod.GET)
public ModelAndView download(@PathVariable int documentId) {
ModelAndView mav = new ModelAndView();
Document document = documentService.fileDownload(documentId);
mav.addObject("downloadDocument", document);
mav.setViewName("download");
return mav;
}
Предположим, вы попали по адресу 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-адреса
Это одна из аннотаций, используемых для отображения / обработки динамических URI. Вы даже можете указать регулярное выражение для динамического параметра URI, чтобы принимать только определенный тип ввода.
Например, если URL-адрес для получения книги с уникальным номером будет:
URL:http://localhost:8080/book/9783827319333
Число, обозначенное в конце URL-адреса, можно получить с помощью @PathVariable, как показано:
@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model){
model.addAttribute("ISBN", id);
return "bookDetails";
}
Короче говоря, это просто еще одно - извлечение данных из HTTP-запросов в Spring.
взгляните на приведенный ниже фрагмент кода.
@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);
}
Если вы хотите, чтобы весь проект увидел, как он работает, загрузите его по ссылке ниже: -
ModelAndView
.@PathVariable
аннотация, используемая для получения имени переменной и ее значения в конце контроллера. например, www.abcd.com/api/value=34455&anotherValue=skjdfjhks здесь value, а anotherValue - это переменная, которую можно получить, используя значение типа @PathVariable ("value") int и @PathVariable ("anotherValue") String anotherValue