2010-07-26 68 views
13

Tôi đang chỉnh sửa một dự án web có sử dụng Spring và tôi cần thêm một số chú thích của Spring. Hai trong số những cái tôi đang thêm là @RequestBody@RequestParam. Tôi đã poking xung quanh một chút và tìm thấy this, nhưng tôi vẫn không hoàn toàn hiểu cách sử dụng các chú thích này. Bất cứ ai có thể cung cấp một ví dụ?Học Spring's @RequestBody và @RequestParam

+3

Có các ví dụ hay trong tài liệu, cho cả ['@ RequestMapping'] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html# mvc-ann-requestparam) và ['@ RequestBody'] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestbody) – skaffman

Trả lời

15

khiển dụ:

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

@RequestBody: biến cơ thể sẽ chứa phần thân của yêu cầu HTTP

@RequestParam: biến baz sẽ giữ giá trị của tham số yêu cầu baz

+0

Phương thức có thể có nhiều tham số @RequestBody không? – Sri

+8

Không thể, chỉ có một Cơ thể HTTP, vì vậy chỉ có thể có một biến RequestBody – lanoxx

2

@RequestParam tham số chú thích được liên kết với Servlet cụ thể thông số yêu cầu. Giá trị tham số được chuyển thành kiểu đối số phương thức được khai báo. Chú thích này cho biết rằng tham số phương thức phải được ràng buộc với tham số yêu cầu web.

Ví dụ yêu cầu kiễu góc cho mùa xuân RequestParam (s) sẽ trông như thế:

$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 thông số chú thích được liên kết với cơ thể yêu cầu HTTP. Các giá trị tham số được chuyển đổi thành kiểu đối số phương thức được khai báo sử dụng HttpMessageConverters. Chú thích này cho biết tham số phương thức phải được ràng buộc với phần thân của yêu cầu web.

Ví dụ yêu cầu kiễu góc cho mùa xuân RequestBody sẽ trông như thế:

$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) {... 

Hope this helps.

Các vấn đề liên quan