2012-12-16 31 views
5

Tôi biết rằng nếu một tham số trông như thế này:Nhận giá trị từ @RequestParam mà không quy định tên

@RequestParam("userId") String userId 

tôi có thể nhận được giá trị bằng cách gọi này:

requestParam.value() 

Nhưng nếu tôi làm không chỉ định một tên, Spring sẽ tự động sử dụng tên biến. Như thế này:

@RequestParam String userId 

Nếu tên param không được chỉ định, làm cách nào tôi có thể truy cập? Tôi biết nó có thể bởi vì Spring làm bằng cách nào đó, nhưng requestParam.value() là trống trong trường hợp này.

+1

Tài liệu hướng dẫn mùa xuân (http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html) nói rằng giá trị() trả về "" theo mặc định, không phải null. Trong thực tế, chú thích Java không được phép chứa null. – ignis

+0

Cảm ơn, tôi đã sửa đổi từ ngữ – user1007895

Trả lời

4

Mùa xuân không điền yêu cầu dựa trên @RequestParam. Thay vào đó nó điền vào đối số phương thức được chú thích bằng @RequestParam (trong một phương thức được chú thích bằng @RequestMapping). Tham số được đưa ra cho chú giải @RequestParam cho Spring biết tên của tham số yêu cầu mà bạn muốn nó sử dụng làm đối số đó. Nếu bạn không cung cấp, Spring sẽ mặc định sử dụng tên của đối số (vì vậy 2 ví dụ bạn đưa ra trong câu hỏi của bạn là tương đương).

Nếu bạn đang cố truy cập thông số yêu cầu, bạn cần phải biết tên của thông số đó, bất kể khung bạn đang sử dụng.

0

Chỉ cần gọi userId, như trong doSomething(userId). Spring liên kết mọi thứ cho bạn.

3

Đề nghị bạn không làm theo cách đó.Spring sử dụng asm để phân tích tệp bytecode java và trích xuất tên thông số của phương thức. Nhưng một số thời gian không hoạt động, vì một số tệp .class không bao gồm tên thông số , chỉ các kiểu tham số, nó phụ thuộc vào các tùy chọn trình biên dịch.

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