Spring MVC Làm cách nào để lấy giá trị tham số của GET HTTP Request trong phương thức controller của tôi?


87

Trong kỳ này, tôi đang tìm hiểu về ví dụ giới thiệu Spring MVC (có thể tải xuống từ STS dasboard) và tôi có một số câu hỏi đơn giản về các Request Mappingví dụ:

1) Trong home.jsptrang 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ý bởi phương thức sau của lớp điều khiển MappingController:

@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 thức này quản lý Yêu cầu HTTP (chỉ GETloại) có tham số có tên "foo"

Làm cách nào để 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 by Parameter?

Câu trả lời:


184

Như đã giải thích trong tài liệu , bằng cách sử dụng @RequestParamchú thích:

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 hướng dẫn
AndreaNobili

3
Trong trường hợp khi có 10 số tham số, chúng ta phải làm điều này 10 lần hay có một cách tốt hơn cho tình huống đó
Đếm

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 đoạn "Các loại đối số phương thức được hỗ trợ" và đọc phần về "Đối tượng lệnh hoặc biểu mẫu"
JB Nizet

43

Bạn cũng có thể sử dụng mẫu URI. Nếu bạn cấu trúc yêu cầu của mình thành một URL yên tĩnh, Spring có thể phân tích cú pháp 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>

Bộ điều 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)";
}

Tài liệu về mẫu URI mùa xuân

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.