web-dev-qa-db-ja.com

Spring mvc @PathVariable

Spring MVCで@PathVariableを使用する際の簡単な説明とサンプルを教えてください。 URLの入力方法を教えてください。
jspページを表示するための正しいURLを取得するのに苦労しています。ありがとう。

105
james

ある注文を取得するためのURLを書きたいとします。

www.mydomain.com/order/123

123はorderIdです。

だから今あなたが春MVCコントローラで使用するURLはのようになります

/order/{orderId}

注文IDをパス変数として宣言できるようになりました

@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}

url www.mydomain.com/order/123を使用している場合、orderId変数には春までに値123が入力されます

PathVariableはURLの一部であるため、PathVariableはrequestParamとは異なります。 request paramを使った同じURLはwww.mydomain.com/order?orderId=123のようになります。

API DOC
Spring Official Reference

199
coder

以下のコードスニペットを見てください。

@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;
}

それがあなたのコードを構築するのに役立つことを願っています。

10
Ashu

パス変数を含むURLがある場合は、次のようになります。www.myexampl.com/item/12/update 12はid、createは単一のフォームを使用して更新を実行する際にintanceの実行を指定するために使用する変数です。作成、あなたはあなたのコントローラーでこれを行います。

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

URLから値を取得するために使用される@PathVariable

例えば:質問をする

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

メソッドパラメータを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;
}
1
Byeon0gam

あなたがwww.example.com/test/111としてURLを打ったとしましょう。今度はあなたはあなたのコントローラメソッドに値111(動的である)を検索しなければなりません。あなたは次のように@PathVariableを使うことになるでしょう:

@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}

そのため、変数値はURLから取得されます。

0
Gagan

これは動的URIをマッピング/処理するために使用されるアノテーションの1つです。 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";

}

つまり、SpringでHTTPリクエストからデータを抽出するという方法があります。

0
Arahan Jha