Pouvez-vous me donner une brève explication et un exemple d'utilisation de @PathVariable
in spring mvc? S'il vous plaît inclure sur comment vous tapez l'URL?
J'ai du mal à trouver la bonne URL pour afficher la page jsp. Merci.
supposez que vous vouliez écrire une URL pour aller chercher un ordre, vous pouvez dire
www.mydomain.com/order/123
où 123 est orderId.
Alors maintenant, l'URL que vous utiliserez au printemps contrôleur MVC ressemblerait à
/order/{orderId}
Maintenant, id id peut être déclaré une variable de chemin
@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}
si vous utilisez l'URL www.mondomaine.com/order/123, la variable orderId sera renseignée par la valeur 123 au printemps.
Notez également que PathVariable diffère de requestParam car pathVariable fait partie de l'URL. La même adresse URL utilisant request param ressemblerait à www.mydomain.com/order?orderId=123
Regardez l'extrait de code ci-dessous.
@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;
}
J'espère que cela vous aidera à construire votre code.
Si vous avez des URL avec des variables de chemin, par exemple, www.myexampl.com/item/12/update, où 12 correspond à l'id et create est la variable que vous souhaitez utiliser pour spécifier votre exécution à l'aide d'un seul formulaire pour effectuer une mise à jour et créer, vous le faites dans votre contrôleur.
@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
utilisé pour extraire la valeur de l'URL
par exemple: pour avoir une question
www.stackoverflow.com/questions/19803731
Ici, une question id
est passée en paramètre dans une URL
Maintenant, pour récupérer cette valeur dans controller
, il vous suffit de passer @PathVariable dans le paramètre method
@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
public String getQuestion(@PathVariable String questionId){
//return question details
}
Annotation indiquant qu'un paramètre de méthode doit être lié à une variable de modèle d'URI. Pris en charge pour les méthodes de gestionnaire annotées 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;
}
Supposons que vous frappez une URL nommée www.example.com/test/111. Vous devez maintenant récupérer la valeur 111 (qui est dynamique) dans votre méthode de contrôleur. À l’heure actuelle, vous utiliserez @PathVariable comme suit:
@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}
SO la valeur de la variable est extraite de l'URL
C'est l'une des annotations utilisées pour mapper/gérer les URI dynamiques. Vous pouvez même spécifier une expression régulière pour le paramètre dynamique URI afin de n'accepter que le type d'entrée spécifique.
Par exemple, si l'URL permettant de récupérer un livre à l'aide d'un numéro unique serait:
URL:http://localhost:8080/book/9783827319333
Le nombre indiqué au dernier de l'URL peut être récupéré à l'aide de @PathVariable comme indiqué:
@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model){
model.addAttribute("ISBN", id);
return "bookDetails";
}
En bref, il s’agit simplement d’extraire les données des requêtes HTTP dans Spring.