Làm cách nào để bạn nhận được tham số url với ánh xạ bộ điều khiển lò xo


98

Vấn đề này có vẻ nhỏ, nhưng tôi không thể làm cho nó hoạt động bình thường. Tôi đang gọi ánh xạ bộ điều khiển mùa xuân của mình với jquery ajax. Giá trị cho someAttr luôn là chuỗi trống bất kể giá trị trong url. Xin hãy giúp tôi xác định tại sao.

-URL được gọi

http://localhost:8080/sitename/controllerLevelMapping/1?someAttr=6

- Lập bản đồ bộ điều khiển

@RequestMapping(value={"/{someID}"}, method=RequestMethod.GET)
public @ResponseBody int getAttr(@PathVariable(value="someID") final String id, 
        @ModelAttribute(value="someAttr") String someAttr) {
    //I hit some code here but the value for the ModelAttribute 'someAttr' is empty string.  The value for id is correctly set to "1".
}

Câu trả lời:


159

Bạn nên sử dụng @RequestParamthay vì @ModelAttribute, ví dụ:

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 @RequestParam String someAttr) {
}

Bạn thậm chí có thể bỏ qua @RequestParamhoàn toàn nếu bạn chọn và Spring sẽ cho rằng đó là những gì:

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 String someAttr) {
}

Trong trường hợp bất kỳ ai khác cũng đang tìm kiếm tài liệu chính thức @RequestParam, đây là: docs.spring.io/spring/docs/current/javadoc-api/org/…
tobias

22

Bạn có rất nhiều biến thể để sử dụng @RequestParamvới các phần tử tùy chọn bổ sung, ví dụ:

@RequestParam(required = false, defaultValue = "someValue", value="someAttr") String someAttr

Nếu bạn không đặt required = false- param sẽ được yêu cầu theo mặc định.

defaultValue = "someValue" - giá trị mặc định để sử dụng làm dự phòng khi tham số yêu cầu không được cung cấp hoặc có giá trị trống.

Nếu yêu cầu và tham số phương thức giống nhau - bạn không cần value = "someAttr"

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.