2012-12-22 23 views
6

Yay ve bir posta isteği ile ilgili bir sorun yaşıyorum. Ben bir Ajax çağrısı için bir kontrolör yöntemi kuruyorum, HTML arama yapmak ne şekilde olursa olsunSpring @RequestParam bağımsız değişkenleri POST yönteminde geçirilmiyor

@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) { 
     .... 

altına yöntem tanımını bakın @RequestParam parametreler için değerleri her zaman boş. Buna benzeyen birçok başka yönteme sahibim, esas fark, diğerlerinin GET yöntemleri olduğu, bunun da bir POST olduğu. POST yöntemiyle @RequestParam kullanmak mümkün değil mi?

Spring version 3.0.7 kullanıyorum.RELEASE - Sorunun nedeninin ne olabileceğini bilen var mı?


Ajax kodu:

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

Ajax kodunuz nedir? –

+0

Soruyu Ajax koduyla güncelledim. Bir şey, istek parametrelerinin istek gövdesinde geçirdiğimi ve beklediğim gibi istek parametrelerini geçmediğimi söylüyor :( –

+0

'@ RequestParam işlevi hem POST hem de GET yöntemiyle çalışıyor (ve şeffaf bir şekilde). Hangi kodlamayı kullanıyorsunuz? POST her zaman UTF-8 kullanıyor. –

cevap

19

Sorun yöntemi çağırıyordu yolu olduğu ortaya çıktı. Benim ajax kodum istek parametresi olarak değil, istek gövdesindeki tüm parametreleri geçiriyordu, bu yüzden benim @RequestParam parametremin hepsi boştu. Ben benim ajax kodu değişti: Ben de istek vücuttan metni almak benim denetleyicisi yöntemi değişti

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

:

@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) { 

Ve beklediğiniz gibi şimdi parametreleri alıyorum.

İlgili konular