web-dev-qa-db-fra.com

Spring mvc @PathVariable

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.

114
james

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

API DOC
référence officielle du printemps

204
coder

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.

10
Ashu

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";
}
6
ochiWlad

@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
}
2
Anway Bhutkar

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;
}
1
Byeon0gam

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

0
Gagan

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.

0
Arahan Jha