2012-11-18 37 views
65

Trong giai đoạn này tôi đang studing MVC Xuân giới thiệu ví dụ (có thể tải về từ STS dasboard) và tôi có một số câu hỏi đơn giản về Request Mapping ví dụ:Spring MVC Làm cách nào để nhận giá trị tham số của một yêu cầu GET HTTP trong phương thức điều khiển của tôi?

1) Trong trang home.jsp của tôi, tôi có liên kết này:

 <li> 
      <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a> 
     </li> 

Như bạn có thể thấy bằng liên kết này, tôi đang thực hiện yêu cầu HTTP GET có tham số "foo" chứa giá trị: "bar".

Yêu cầu HTTP này được xử lý theo phương pháp sau đây của MappingController lớp điều khiển:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo") 
public @ResponseBody String byParameter() { 
    return "Mapped by path + method + presence of query parameter! (MappingController)"; 
} 

Phương pháp này quản lý HTTP Request (chỉ GET loại) mà đã một tham số có tên là "foo"

thế nào có thể Tôi lấy giá trị ("bar") của tham số này và đặt nó vào một biến bên trong mã của phương thức Parameter của tôi?

Trả lời

152

Như đã giải thích trong the documentation, bằng cách sử dụng một chú thích @RequestParam:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) { 
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = " 
      + foo; 
} 
+3

Cảm ơn bạn rất nhiều cho bạn câu trả lời rõ ràng và cho tham chiếu đến các tài liệu – AndreaNobili

+2

Trong trường hợp khi có 10 số lượng tham số, chúng ta phải làm điều này 10 lần hoặc có cách tốt hơn cho kịch bản thar – Count

+2

@Count: nhấp vào liên kết tôi đã cung cấp cho tài liệu, sau đó cuộn lên một chút cho đến khi đoạn "Loại đối số phương thức được hỗ trợ" và đọc phần về "Đối tượng biểu mẫu hoặc lệnh" –

33

Bạn cũng có thể sử dụng một mẫu URI. Nếu bạn đã cấu trúc yêu cầu của mình thành một URL an toàn, Spring có thể phân tích giá trị được cung cấp từ url.

HTML

<li> 
    <a id="byParameter" 
     class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and 
      presence of parameter</a> 
</li> 

khiển

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET) 
public @ResponseBody String byParameter(@PathVariable String foo) { 
    //Perform logic with foo 
    return "Mapped by path + method + presence of query parameter! (MappingController)"; 
} 

Spring URI Template Documentation

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