2010-07-26 11 views
13

मैं एक वेब प्रोजेक्ट संपादित कर रहा हूं जो वसंत का उपयोग करता है और मुझे कुछ वसंत की टिप्पणियां जोड़ने की आवश्यकता है। मैं जो जोड़ रहा हूं उनमें से दो @RequestBody और @RequestParam हैं। मैं थोड़ी देर के आसपास पोकिंग कर रहा हूं और this पाया, लेकिन मैं अभी भी पूरी तरह से समझ नहीं पा रहा हूं कि इन एनोटेशन का उपयोग कैसे करें। क्या कोई उदाहरण प्रदान कर सकता है?सीखना वसंत की @RequestBody और @RequestParam

+3

दोनों ['@ requestMapping'] के लिए प्रलेखन में अच्छे उदाहरण हैं (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html# mvc-ann-requestparam) और ['@ requestBody'] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestbody) – skaffman

उत्तर

15

नियंत्रक उदाहरण:

@Controller 
class FooController { 
    @RequestMapping("...") 
    void bar(@RequestBody String body, @RequestParam("baz") baz) { 
     //method body 
    } 
} 

@RequestBody: चर शरीर HTTP अनुरोध के शरीर

@RequestParam में शामिल होंगे: चर baz अनुरोध पैरामीटर baz का मूल्य का आयोजन करेगा

+0

क्या किसी विधि में एकाधिक @RequestBody पैरा हैं? – Sri

+8

नहीं, यह नहीं हो सकता है, केवल एक HTTP निकाय है, इसलिए केवल एक अनुरोधबॉडी चर हो सकता है – lanoxx

2

@RequestParam एनोटेटेड पैरामीटर विशिष्ट सर्वलेट से जुड़े होते हैं अनुरोध पैरामीटर। पैरामीटर मान घोषित विधि तर्क प्रकार में परिवर्तित हो जाते हैं। यह एनोटेशन इंगित करता है कि एक विधि पैरामीटर वेब अनुरोध पैरामीटर से बाध्य होना चाहिए।

के लिए स्प्रिंग RequestParam (रों) के लिए उदाहरण के कोणीय अनुरोध है कि ऐसा दिखाई देगा:

$http.post('http://localhost:7777/scan/l/register', {params: {"username": $scope.username, "password": $scope.password, "auth": true}}). 
        success(function (data, status, headers, config) { 
         ... 
        }) 

@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/register") 
public Map<String, String> register(Model uiModel, 
            @RequestParam String username, @RequestParam String password, boolean auth, 
            HttpServletRequest httpServletRequest) {... 

@RequestBody एनोटेट मापदंडों HTTP अनुरोध शरीर से जुड़ा हुआ मिलता है। पैरामीटर मान HttpMessageConverters का उपयोग कर घोषित विधि तर्क प्रकार में परिवर्तित हो जाते हैं। यह एनोटेशन इंगित करता है कि एक विधि पैरामीटर वेब अनुरोध के शरीर से बंधे होना चाहिए।

उदाहरण के लिए स्प्रिंग RequestBody के लिए कोणीय अनुरोध है कि ऐसा दिखाई देगा:

$scope.user = { 
      username: "foo", 
      auth: true, 
      password: "bar" 
     };  
$http.post('http://localhost:7777/scan/l/register', $scope.user). 
         success(function (data, status, headers, config) { 
          ... 
         }) 

@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/register") 
public Map<String, String> register(Model uiModel, 
            @RequestBody User user, 
            HttpServletRequest httpServletRequest) {... 

आशा इस मदद करता है।

संबंधित मुद्दे