2012-10-24 15 views
13

Bir Spring 3.1.2 uygulaması çalıştırıyorum. Bir dizi yöntemle RESTful bir servletim var. GET yöntemleri fantastik çalışıyor (@PathVariables eşleştirme, Yanıtları doğru kabul JSON veya XML Accept üstbilgisine göre, vb)% 100 zaman. Yay @RequestParam "required = false" olmadıkça bir POST parametresi kabul edilmiyor

Ancak, POST yöntemi çalışmaz. Çevirileri ve diğer her Bahar yönüyle uğraştığım saatlerden sonra (bütün tinkering geri döndü), alanını @RequestParam alanına daraltdım. = False gerekli

@RequestMapping (value = "/bogus", 
       method = POST) 
public @ResponseBody PassResponse bogus (
      @RequestParam (value = "test", required = false) String test) { 
    // Just some handy garbage objects that marshal to JSON/XML 
    UserResponse user = new UserResponse(); 
    user.setName (test); 
    AccountDetail detail = new AccountDetail (user,null); 
    return new PassResponse (detail); 
} 

: Bu benim araştırmak için kullanıyorum basitleştirilmiş bir test yöntemidir her şey çalışıyor (parametre alınan ve yorumlanır). Devam etsin diye beklemek Tam olarak

gerekli = true:

: "Gerekli dize parametresi 'test' bulunmadığı MissingServletRequestParameterException" Ben sürekli mesaj almak (bu, varsayılan olduğundan ya, belirtilmemiş)

Müşteri yandan görünüşüdür:

= gerçek

Request URL:http://localhost:8080/internal-project/rest/bogus 
Request Method:POST 
Status Code:400 Bad Request 
Request Headersview source 
Accept:application/json 
Connection:keep-alive 
Content-Length:12 
Host:localhost:8080 
Request Payload 
test=LALALAA 
Response Headersview source 
Connection:close 
Content-Length:971 
Content-Type:text/html;charset=utf-8 
Date:Wed, 24 Oct 2012 18:41:05 GMT 
Server:Apache-Coyote/1.1 
gerekligerekli = required geçmek ve parametre geçirilen görebilir zaman aynı test paketi olarak çalıştırmak

Request URL:http://localhost:8080/internal-project/rest/bogus 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:application/json 
Connection:keep-alive 
Content-Length:12 
Host:localhost:8080 
Request Payload 
test=LALALAA 
Response Headersview source 
Content-Type:application/json;charset=UTF-8 
Date:Wed, 24 Oct 2012 18:44:03 GMT 
Server:Apache-Coyote/1.1 
Transfer-Encoding:chunked 

yanlış. Parametre isteğe bağlı olduğunda, Yay doğru şekilde işleyebilir.

Eğer daha önce bununla karşılaştıysanız veya herhangi bir fikri varsa, bunları duymayı çok isterim. Gerekli parametreyi isteğe bağlı olarak işaretlemek, çalışsa bile, yorumluyor olsam bile, korkunç kendi kendini belgelemektir. Ayrıca davranış beni biraz tedirgin ediyor. Umarım bir yere bir şeyleri mahvettim ...

cevap

18

Sizin Content-Type başlığınız olmalıdır.

+0

Doğru değil! İçerik Türü'nü önerdiğiniz gibi ayarlama aslında haritalama davranışını normalleştirdi. Bunu yapmak için başarısız olmam gerektiğinde, 'gerekli' alanının neden farklı davranışı tetiklediğini bilmiyorum, ama bu daha küçük bir mesele. Zaman ayırdığın için teşekkürler! – node42

İlgili konular