Відповіді:
припустимо, ви хочете написати 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 - це змінна, яку ви хочете використовувати для визначення вашого виконання, наприклад, за допомогою єдиної форми для оновлення та створюючи, ви робите це у своєму контролері.
@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;
}
Припустимо, ви потрапили на 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-адреси
Це одна з приміток, яка використовується для відображення / обробки динамічних 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-запитів навесні.
подивіться на наведений нижче фрагмент коду.
@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 тут значення та elseValue є змінною, яку можна отримати за допомогою int значення @PathVariable ("value") та @PathVariable ("AnotherValue") String anotherValue