2010-07-26 124 views
13

我在編輯一個使用Spring的Web項目,我需要添加一些Spring的註釋。我添加的兩個是@RequestBody@RequestParam。我一直在探索一下,發現this,但我仍然不完全明白如何使用這些註釋。有誰能提供一個例子嗎?學習Spring的@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 2010-07-26 17:41:19

回答

15

控制器例如:

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

@RequestBody可變體將包含HTTP請求的主體

@RequestParam可變巴茲將持有請求參數巴茲的值

+0

一個方法可以有多個@RequestBody參數嗎? – Sri 2011-04-20 06:56:43

+8

不,它只能有一個HTTP Body,所以只能有一個RequestBody變量 – lanoxx 2013-05-23 21:59:11

2

@RequestParam帶註釋的參數被鏈接到特定的Servlet請求參數。參數值被轉換爲聲明的方法參數類型。 此註釋表示應該將方法參數綁定到Web請求參數。

爲春季RequestParam(S)例如角請求將看起來像:

$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將參數值轉換爲聲明的方法參數類型。 該註釋表示應將方法參數綁定到Web請求的主體。

例如,對於春季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) {... 

希望這有助於。