2012-12-22 35 views
6

Tôi gặp sự cố với Spring và yêu cầu bài đăng. Tôi đang thiết lập một phương pháp điều khiển cho một cuộc gọi Ajax, xem định nghĩa phương pháp dưới đâyCác đối số Spring @RequestParam không được chuyển trong phương thức POST

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestParam(value = "text", required = false) String text, 
     HttpServletResponse response) { 
     .... 

Không có vấn đề gì cách tôi thực hiện cuộc gọi HTML, các giá trị cho các thông số @RequestParam luôn null. Tôi có nhiều phương pháp khác trông như thế này, sự khác biệt chính là các phương thức khác là phương thức GET, trong khi đó phương thức này là POST. Có thể sử dụng @RequestParam bằng phương thức POST không?

Tôi đang sử dụng phiên bản Spring 3.0.7.RELEASE - Có ai biết nguyên nhân gây ra sự cố không?


mã Ajax:

$.ajax({ 
    type:'POST', 
    url:"/comments/add.page", 
    data:{ 
     uuid:"${param.uuid}", 
     type:"${param.type}", 
     text:text 
    }, 
    success:function (data) { 
     // 
    } 
}); 
+1

Mã ajax của bạn là gì? –

+0

Tôi đã cập nhật câu hỏi bằng mã Ajax. Một cái gì đó cho tôi biết tôi đang chuyển các tham số trong phần thân yêu cầu chứ không phải tham số yêu cầu như tôi mong đợi: ( –

+0

'@ RequestParam' hoạt động với cả phương thức POST và GET (và theo cách minh bạch). Luôn luôn sử dụng UTF-8 –

Trả lời

19

Vấn đề hóa ra là cách tôi đang gọi phương pháp này. Mã ajax của tôi đã chuyển tất cả các tham số trong phần thân yêu cầu và không phải là tham số yêu cầu, vì vậy đó là lý do tại sao các tham số @RequestParam của tôi đều trống. Tôi thay đổi mã ajax của tôi để:

$.ajax({ 
    type: 'POST', 
    url: "/comments/add.page?uuid=${param.uuid}&type=${param.type}", 
    data: text, 
    success: function (data) { 
     // 
    } 
}); 

Tôi cũng thay đổi phương pháp điều khiển của tôi để có những văn bản ra khỏi cơ thể theo yêu cầu:

@RequestMapping(value = "add.page", method = RequestMethod.POST) 
@ResponseBody 
public Object createComment(
     @RequestParam(value = "uuid", required = false) String entityUuid, 
     @RequestParam(value = "type", required = false) String entityType, 
     @RequestBody String text, 
     HttpServletResponse response) { 

Và bây giờ tôi nhận được các thông số như tôi mong đợi.

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