2012-04-18 28 views
7

Tôi đang sử dụng spring-mvc 3.1.0.RELEASE và vì một số lý do, ánh xạ POST với thông số truy vấn và yêu cầu không hoạt động.Sử dụng cả @RequestBody và @RequestParam cùng nhau vào mùa xuân mvc3

Sau đây là cách thức điều khiển của tôi trông:

@RequestMapping(method = POST, value = "/post-to-me/") 
    public void handlePost(
    @RequestBody Content content, 
    @RequestParam("param1") String param1, 
    @RequestParam("param2") String param2 
){ 
     //do stuff  
    } 

Tuy nhiên, nếu tôi chuyển đổi tất cả các params yêu cầu params đường, lập bản đồ hoạt động. Có ai chạy vào một cái gì đó tương tự?

Cảm ơn!

EDIT: "không hoạt động" == 404 khi tôi cố gắng làm, POST /post-to-me?param1=x&param2=y

+0

Liệu nó làm việc, nếu bạn loại bỏ '@RequestParam ("param1") String param1' và' param2' quá? – Ralph

+0

yêu cầu của bạn có nội dung gì và loại nội dung nào được chấp nhận? – soulcheck

+0

tôi có cùng một vấn đề nhưng Lỗi là 500 ... bạn đã giải quyết được vấn đề của mình chưa? – itsMe

Trả lời

0

Thứ nhất, url POST của bạn doen't phù hợp với phương pháp điều khiển url, url POST của bạn phải "/ post-to- me /? param1 = x & param2 = y "không"/post-to-me? param1 = x & param2 = y "

Thứ hai, lớp Nội dung đến từ đâu ?? Tôi sử dụng một String và hoạt động tốt đối với tôi

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me/") 
public void handlePost(@RequestBody String content, 
     @RequestParam("param1") String param1, 
     @RequestParam("param2") String param2, HttpServletResponse response) { 
    System.out.println(content); 
    System.out.println(param1); 
    System.out.println(param2); 
    response.setStatus(HttpServletResponse.SC_OK); 
} 

Lưu ý rằng tôi đã sử dụng HttpServletResponse để trả về một mã HTTP 200, nhưng tôi nghĩ rằng có một giải pháp tốt hơn cho mã trở lại Http, kiểm tra này: Multiple response http status in Spring MVC

1

Trailing dấu gạch chéo ở cuối giá trị ánh xạ yêu cầu của bạn có thể là vấn đề. Hãy thử:

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me") 

hoặc gửi yêu cầu POST của bạn để POST /post-to-me/?param1=x&param2=y

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