Sunday, 15 August 2010

java - JSON deserialize only with at least 2 parameters -


मैं टॉमी प्लस 1.7.1 के साथ Jettison के लिए एक रसीला सेवा एप्लिकेशन को लागू कर रहा हूं डिफ़ॉल्ट json प्रदाता के रूप में उनमें से प्रत्येक के लिए सीआरयूड की कार्यक्षमताओं को प्रदान करने के लिए मेरे प्रवेश वर्गों के लिए कई मुखौटा वर्ग हैं I नेटबीन द्वारा सेवा का मुखौटा उत्पन्न किया गया है।

यह POST विधि है:

  @POST सार्वजनिक शून्य बनाने (कोर्स इकाई) {super.create (इकाई); }  

इस पद्धति का उपयोग करते समय (डेटाबेस में एक नया उदाहरण बनाने के लिए) मुझे निम्न त्रुटि मिली:

  अनुरोध के लिए कोई संदेश शरीर रीडर नहीं मिला है कक्षा ऑब्जेक्ट, कंटेंट टाइप: एप्लिकेशन / जेसन  

कोशिश करने के कई घंटों के बाद, मुझे यह काम करने के लिए मिला: मुझे विधि में एक और पैरामीटर जोड़ना पड़ा, जैसे:

  @ POST सार्वजनिक शून्य बनाने (@ कॉन्टेक्ट प्रसंग UuriInfo, कोर्स इकाई) {super.create (इकाई); }  

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

क्या किसी को इसका कारण पता है?

ठीक है, मुझे लगता है कि मुझे समाधान मिला:

मेरे सभी आराम सेवाओं को मुखौटा कक्षाओं के रूप में लागू किया गया है। अमूर्त मुखौटा (सभी सेवाओं के सुपर वर्ग) में कई तरीके हैं:

  सार्वजनिक शून्य बनाने (टी एंटिटी) {getEntityManager ()। जारी रहें (इकाई); } सार्वजनिक शून्य संपादन (टी एंटिटी) {getEntityManager ()। मर्ज (इकाई);}  

ये विधियों को मुखौटा वर्गों द्वारा उपयोग किया जाता है:

  सार्वजनिक शून्य बनाने (कोर्स इकाई) {super.create (इकाई); } सार्वजनिक शून्य संपादन (@पाथपरम ("आईडी") पूर्णांक आईडी, कोर्स इकाई) {super.edit (इकाई); }  

(बेहतर देखने के लिए मैंने यहां एनोटेशन को निकाल दिया है)

इन दोनों विधियों के बीच का अंतर है, कि संपादन विधि में दूसरा पैरामीटर "id" और इसलिए सुपर वर्ग के संपादन () विधि को ओवरराइड नहीं करता है। लेकिन बनाने () विधि में केवल एक पैरामीटर है जो सुपर क्लास विधि "create ()" के ओवरराइड का कारण बनता है। मुझे क्यों नहीं पता है, लेकिन सीएक्सएफ अब दो समापन बिंदु बना रहा है:

  डाक http: // स्थानीयहोस्ट: 8080 / वेबप्रोग / एपीआई / कोर्स / - & gt; शून्य बनाने (कोर्स) पोस्ट http: // स्थानीयहोस्ट: 8080 / वेबप्रोग / एपीआई / कोर्स / - & gt; शून्य बनाने (ऑब्जेक्ट)  

यह भी एक कारण है कि मैं इसे एक सेकोन पैरामीटर के साथ काम कर रहा हूं: create () विधि अब ओवरराइड नहीं हो रही है।

मैंने अब क्या किया, केवल सुपर वर्ग में विधि का नाम बदलकर, उन्हें मुखौटा वर्गों में ओवरराइड न करने के लिए।

वैसे: सभी सेवाओं की कक्षाएं नेटबीन जनरेटर द्वारा बनाई गई हैं ... शायद इसमें एक बग है


No comments:

Post a Comment