Respostas:
suponha que você queira escrever um URL para buscar algum pedido, você pode dizer
www.mydomain.com/order/123
onde 123 é orderId.
Então agora o URL que você usará no controlador mvc da primavera ficaria
/order/{orderId}
Agora, o ID do pedido pode ser declarado uma variável de caminho
@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}
se você usar o URL www.mydomain.com/order/123, a variável orderId será preenchida pelo valor 123 na primavera
Observe também que PathVariable difere de requestParam, pois pathVariable faz parte da URL. O mesmo URL usando o parâmetro de solicitação seria semelhante www.mydomain.com/order?orderId=123
Veja o trecho de código abaixo.
@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;
}
Espero que ajude na construção do seu código.
Se você tiver URL com variáveis de caminho, exemplo www.myexampl.com/item/12/update em que 12 é o ID e create é a variável que você deseja usar para especificar sua execução, por exemplo, usando um único formulário para fazer uma atualização e criar, você faz isso no seu controlador.
@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
usado para buscar o valor do URL
por exemplo: para tirar uma dúvida
www.stackoverflow.com/questions/19803731
Aqui alguma pergunta id
é passada como um parâmetro no URL
Agora, para buscar esse valor, controller
basta passar @PathVariable no parâmetro method
@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
public String getQuestion(@PathVariable String questionId){
//return question details
}
Anotação que indica que um parâmetro de método deve ser associado a uma variável de modelo de URI. Suportado para métodos manipuladores anotados 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;
}
Suponhamos que você acesse um URL como www.example.com/test/111. Agora você deve recuperar o valor 111 (que é dinâmico) para o seu método de controlador. No momento, você usará @PathVariable da seguinte maneira:
@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}
SO, o valor da variável é recuperado do URL
É uma das anotações usadas para mapear / manipular URIs dinâmicos. Você pode até especificar uma expressão regular para o parâmetro dinâmico do URI para aceitar apenas tipos específicos de entrada.
Por exemplo, se o URL para recuperar um livro usando um número exclusivo fosse:
URL:http://localhost:8080/book/9783827319333
O número indicado no último URL pode ser buscado usando @PathVariable, como mostrado:
@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model){
model.addAttribute("ISBN", id);
return "bookDetails";
}
Em suma, é apenas outra foi extrair dados de solicitações HTTP no Spring.
dê uma olhada no snippet de código abaixo.
@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);
}
Se você deseja que o projeto completo veja como ele funciona, faça o download no link abaixo: -
ModelAndView
.@PathVariable
anotação usada para obter o nome da variável e seu valor no final do controlador. por exemplo, www.abcd.com/api/value=34455&anotherValue=skjdfjhks aqui value e anotherValue é uma variável que você pode obter usando @PathVariable ("value") int value e @PathVariable ("anotherValue") String anotherValue