2012-10-24 8 views
13

मैं वसंत 3.1.2 एप्लिकेशन चला रहा हूं। मेरे पास कई विधियों के साथ एक रेस्टस्टल सर्वलेट है। जीईटी विधियां शानदार काम कर रही हैं (@PathVariables मिलान, स्वीकार किए गए हेडर आदि के आधार पर जेएसओएन या एक्सएमएल के लिए सही तरीके से प्रतिक्रियाएं प्रतिक्रियाएं) 100% समय।स्प्रिंग एक POST पैरामीटर स्वीकार नहीं करता है जब तक कि @RequestParam "आवश्यक = झूठी"

हालांकि पोस्ट विधि बस काम नहीं कर रही है। कनवर्ट्स और हर दूसरे स्प्रिंग पहलू के साथ गड़बड़ करने के घंटों के बाद मुझे मिल सकता है (सभी टिंकरिंग उलट), मैंने required फ़ील्ड को @RequestParam में संकुचित कर दिया।

@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); 
} 

= आवश्यक झूठी:: यह एक सरल बनाया परीक्षा पद्धति मैं जांच करने के लिए प्रयोग कर रहे है सब कुछ काम करता है (पैरामीटर प्राप्त किया और व्याख्या की है)। मैं यह काम करने की उम्मीद बिल्कुल के रूप में

आवश्यक = सच: (या निर्दिष्ट नहीं है, क्योंकि यह डिफ़ॉल्ट है) मैं लगातार संदेश मिलता है:

" MissingServletRequestParameterException आवश्यक स्ट्रिंग पैरामीटर 'परीक्षण' मौजूद नहीं है"

क्लाइंट साइड दृश्य:

आवश्यक = सच

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 

आवश्यक = false

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 

जब required टॉगल और मैं देख सकता हूँ पैरामीटर पारित किया जा रहा है यह ठीक उसी टेस्ट स्वीट चलाया जा रहा है। जब पैरामीटर वैकल्पिक होता है, तो वसंत इसे सही तरीके से संभालता है।

यदि कोई इस से पहले चला गया है या कोई विचार है तो मुझे उन्हें सुनना अच्छा लगेगा। आवश्यक पैरामीटर को वैकल्पिक के रूप में चिह्नित करना, भले ही यह काम करता है, भले ही मैं इसे टिप्पणी करता हूं, भयानक स्वयं दस्तावेज है। इसके अलावा व्यवहार मुझे थोड़ा परेशान कर रहा है। उम्मीद है कि मैंने कहीं कुछ खराब कर दिया है ...

उत्तर

18

आपका Content-Type शीर्षलेख application/x-www-form-urlencoded होना चाहिए।

+0

आप सही हैं! आपके द्वारा सुझाए गए 'सामग्री-प्रकार' को सेट करने से वास्तव में मानचित्रण व्यवहार को सामान्यीकृत किया गया था। मुझे नहीं पता कि जब मैं इसे सेट करने में विफल रहा, तो 'आवश्यक' फ़ील्ड ने अलग व्यवहार को क्यों ट्रिगर किया, लेकिन यह एक छोटा मामला है। अपना समय देने के लिए धन्यवाद! – node42

संबंधित मुद्दे