Odpowiedzi:
załóżmy, że chcesz napisać adres URL, aby pobrać jakieś zamówienie, możesz powiedzieć
www.mydomain.com/order/123
gdzie 123 to orderId.
Więc teraz będzie wyglądał adres URL, którego będziesz używać wiosną kontrolera MVC
/order/{orderId}
Teraz identyfikator zamówienia można zadeklarować jako zmienną ścieżki
@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}
jeśli używasz adresu URL www.mydomain.com/order/123, zmienna orderId zostanie uzupełniona wartością 123 do wiosny
Należy również zauważyć, że zmienna PathVariable różni się od requestParam, ponieważ zmienna pathVariable jest częścią adresu URL. Wyglądałby taki sam adres URL korzystający z parametru żądania www.mydomain.com/order?orderId=123
Spójrz na poniższy fragment kodu.
@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;
}
Mam nadzieję, że pomoże to w konstruowaniu kodu.
Jeśli masz adres URL ze zmiennymi ścieżkami, na przykład www.myexampl.com/item/12/update, gdzie 12 to identyfikator, a create to zmienna, której chcesz użyć do określenia wykonania, na przykład przy użyciu pojedynczego formularza do wykonania aktualizacji i tworzyć, robisz to w swoim kontrolerze.
@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
służy do pobierania wartości z adresu URL
na przykład: Aby uzyskać jakieś pytanie
www.stackoverflow.com/questions/19803731
Tutaj pewne pytanie id
jest przekazywane jako parametr w adresie URL
Teraz, aby pobrać tę wartość, controller
wszystko, co musisz zrobić, to po prostu przekazać @PathVariable w parametrze metody
@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
public String getQuestion(@PathVariable String questionId){
//return question details
}
Adnotacja wskazująca, że parametr metody powinien być powiązany ze zmienną szablonu URI. Obsługiwane dla metod obsługi z adnotacjami 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;
}
Załóżmy, że trafiłeś na adres URL www.example.com/test/111. Teraz musisz pobrać wartość 111 (która jest dynamiczna) do metody kontrolera. W tym czasie będziesz używać @PathVariable w następujący sposób:
@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}
Więc wartość zmiennej jest pobierana z adresu URL
Jest to jedna z adnotacji używanych do mapowania / obsługi dynamicznych identyfikatorów URI. Możesz nawet określić wyrażenie regularne dla parametru dynamicznego URI, aby akceptować tylko określony typ danych wejściowych.
Na przykład, jeśli adres URL do pobrania książki przy użyciu unikalnego numeru to:
URL:http://localhost:8080/book/9783827319333
Numer znajdujący się na końcu adresu URL można pobrać za pomocą @PathVariable, jak pokazano:
@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model){
model.addAttribute("ISBN", id);
return "bookDetails";
}
Krótko mówiąc, to po prostu kolejny sposób na wyodrębnienie danych z żądań HTTP na wiosnę.
spójrz na poniższy fragment kodu.
@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);
}
Jeśli chcesz, aby cały projekt zobaczył, jak to działa, pobierz go z poniższego linku: -
ModelAndView
.@PathVariable
adnotacja używana do uzyskania nazwy zmiennej i jej wartości na końcu kontrolera. np. www.abcd.com/api/value=34455&anotherValue=skjdfjhks tutaj value, a anotherValue jest zmienną, którą można uzyskać za pomocą @PathVariable ("value") int value i @PathVariable ("anotherValue") String anotherValue