2012-10-12 31 views
5

điều khiển chữ ký (Tôi đã thử như requestbody cũng):json đường bưu điện đến mùa xuân khiển MVC

@RequestMapping(value = "/Lame", method = RequestMethod.POST) 
public 
@ResponseBody 
boolean getLame(@RequestParam String strToMatchA, @RequestParam String strToMatchB) {} 

Và đây là json tôi:

{ 
"strToMatchA": "EN", 
"strToMatchB": "lon" 
} 

Không làm việc, tôi nhận được lỗi:

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'strToMatchA' is not present 

Xóa thông số đầu tiên này khỏi chữ ký phương thức rồi làm cho nó hoạt động (phương pháp được gọi chính xác), tôi nên làm gì oing?

Khi tôi thay đổi các thông số phương pháp để được chú thích với @RequestBody tôi nhận được lỗi sau:

java.io.IOException: Stream closed 
+0

Bạn đã biên dịch với gỡ lỗi được bật chưa? Nếu không, tên thông số của bạn sẽ không có sẵn. –

+0

@DavidGrant RequestParam sẽ lấy tên tham số được xác định trong chữ ký phương thức. Nhưng tôi đã thử khi chỉ định tên theo cách thủ công quá – NimChimpsky

+1

Bạn đang sử dụng thư viện nào để ánh xạ đối tượng? Có phải Jackson hay cái gì khác không? Là nó trên classpath? Ngoài ra, phương thức yêu cầu cho các bộ điều khiển RESTFul về cơ bản sẽ là 'GET' thay cho' POST'. – Lion

Trả lời

3

json của bạn là tốt nhưng không phải là chữ ký bộ điều khiển. Tạo một lớp với các bộ định vị khớp với json. Sử dụng nó làm đối số thay vì chuỗi của bạn. Chú thích nó với người yêu cầu. Nó sẽ hoạt động.

+2

là không có cách nào khác? Tôi cho rằng mùa xuân coul dhandle multple yêu cầu paramters? – NimChimpsky

+0

Nó có thể nhưng nó không phải là một tham số yêu cầu những gì bạn có là cơ thể của yêu cầu – eugen

+0

Tôi đã thử với cả hai annoations. Cả hai đều không hoạt động. Làm thế nào tôi có thể làm điều đó bằng cách sử dụng hai paramters phương pháp ...? – NimChimpsky

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