स्प्रिंग पीवीसी @PVVariable


125

क्या आप मुझे एक संक्षिप्त विवरण दे सकते हैं और @PathVariableस्प्रिंग mvc के उपयोग में एक नमूना दे सकते हैं ? कृपया बताएं कि आप url कैसे टाइप करते हैं?
मैं jsp पृष्ठ दिखाने के लिए सही url प्राप्त करने में संघर्ष कर रहा हूँ। धन्यवाद।


1
वसंत mvc नियंत्रक के माध्यम से एक jsp दिखाना दृश्य या कहें के माध्यम से किया जाता है ModelAndView@PathVariableएनोटेशन का उपयोग चर नाम और नियंत्रक मूल्य पर इसके मूल्य को प्राप्त करने के लिए किया जाता है। जैसे www.abcd.com/api/value=34455&anotherValue=skjdfjhks यहां मूल्य और anotherValue चर जो आप उपयोग कर प्राप्त कर सकते हैं @PathVariable ( "मान") पूर्णांक मूल्य और @PathVariable ( "anotherValue") स्ट्रिंग anotherValue है
agpt

जवाबों:


221

मान लीजिए कि आप कुछ आदेश लाने के लिए एक url लिखना चाहते हैं, तो आप कह सकते हैं

www.mydomain.com/order/123

जहां 123 ऑर्डरआईडी है।

तो अब आप स्प्रिंग mvc कंट्रोलर में जो url इस्तेमाल करेंगे वह दिखेगा

/order/{orderId}

अब आदेश आईडी को एक पथ चर घोषित किया जा सकता है

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

यदि आप url www.mydomain.com/order/123 का उपयोग करते हैं, तो ऑर्डरआईडी वैरिएबल वसंत द्वारा मूल्य 123 से आबाद हो जाएगा

यह भी ध्यान दें कि PathVariable अनुरोध से अलग है क्योंकि pathVariable URL का हिस्सा है। अनुरोध परम का उपयोग कर एक ही यूआरएल की तरह दिखेगा www.mydomain.com/order?orderId=123

एपीआई डॉओसी
स्प्रिंग आधिकारिक संदर्भ


pathVariable का उपयोग करने में। क्या मुझे कुछ आयात करने की आवश्यकता है? या कोई निर्भरता? धन्यवाद।
james

आपको बस PathVariable एनोटेशन आयात आयात करने की आवश्यकता है। org.springframework.web.bind.annotation.PathVariable
कोडर

हाँ कुछ विवरण प्रदान करें, आप क्या करने की कोशिश कर रहे हैं और मुद्दा क्या है
कोडर

stackoverflow.com/questions/19804202/… .. यहाँ कोड है
james

मैं www.mydomain.com/order/abc.def करना चाहता हूं, अब नियंत्रक में मुझे केवल abc मिल रहा है
prem30488

10

नीचे दिए गए कोड स्निपेट पर एक नज़र डालें।

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

आशा है कि यह आपके कोड के निर्माण में मदद करता है।


मैं मॉडल और दृश्य से परिचित नहीं हूं। Hehe। धन्यवाद btw .. मेरी परियोजना पर इसे लागू करने के लिए आगे देख .. लेकिन मैं इसे पहले खत्म करने की जरूरत है। :)
जेम्स

मुझे लगता है कि आपको रास्ते में आने के लिए @PathVariable ("प्रकार") लिखना होगा।
फेलिक्सम

1
मैं www.mydomain.com/order/abc.def करना चाहता हूं, अब नियंत्रक में मुझे केवल abc मिल रहा है
prem30488

1
इसे regexp का उपयोग किया गया [a-zA-z0-9।]
prem30488

8

यदि आपके पास पथ चर के साथ url है, तो उदाहरण www.myexampl.com/item/12/update जहां 12 आईडी है और वह चर है जिसे आप अपने निष्पादन को निर्दिष्ट करने के लिए उपयोग करना चाहते हैं उदाहरण के लिए एक अद्यतन करने के लिए एकल फ़ॉर्म का उपयोग करना। बनाएँ, आप इसे अपने नियंत्रक में करते हैं।

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

यह तंत्र सुनिश्चित करता है कि एक पथ चर किसी दिए गए चर से बंधा हुआ है।
ochiWlad 8

2

@PathVariable URL से मान प्राप्त करने के लिए उपयोग किया जाता है

उदाहरण के लिए: कुछ प्रश्न प्राप्त करने के लिए

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
}

इस के लिए फॉर्म कैसा दिखता है? क्या मैं {ISBN} मान निर्दिष्ट करने के लिए इनपुट मानों में से एक का उपयोग कर सकता हूं? यदि हाँ, तो मैं फार्म पैरामीटर th: कार्रवाई के लिए पूर्ण URL का निर्माण कैसे करूँ?
Jan Horčička

1

एनोटेशन जो इंगित करता है कि एक विधि पैरामीटर एक यूआरआई टेम्पलेट चर के लिए बाध्य होना चाहिए। 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;
}

0

आइए मान लेते हैं कि आपने एक url को www.example.com/test/111 के रूप में मारा। अब आपको अपने कंट्रोलर मेथड के लिए वेल्यू १११ (जो डायनेमिक है) प्राप्त करनी है। समय आने पर आप @PathVariable का उपयोग इस प्रकार करेंगे:

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

चर मान को url से पुनर्प्राप्त किया जाता है


0

यह डायनेमिक URI को मैप / हैंडल करने के लिए उपयोग किए जाने वाले एनोटेशन में से एक है। आप केवल विशिष्ट प्रकार के इनपुट को स्वीकार करने के लिए 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";

}

संक्षेप में, यह बस एक और वसंत में HTTP अनुरोधों से डेटा निकालने के लिए था।


इस के लिए फॉर्म कैसा दिखता है? क्या मैं {ISBN} मान निर्दिष्ट करने के लिए इनपुट मानों में से एक का उपयोग कर सकता हूं? यदि हाँ, तो मैं फार्म पैरामीटर th: कार्रवाई के लिए पूर्ण URL का निर्माण कैसे करूँ?
Jan Horčička

-1

नीचे दिए गए कोड स्निपेट पर एक नज़र डालें।

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

यदि आप पूरी परियोजना को देखना चाहते हैं कि यह कैसे काम करता है तो इसे नीचे दिए गए लिंक से डाउनलोड करें: -

GitLab पर UserInfo प्रोजेक्ट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.