2012-02-16 10 views
10

जबकि मैं वापस लौटने की कोशिश कर रहा हूं इसकी फेंकने की सूची कोई संदेश बॉडी लेखक प्रतिक्रिया वर्ग ArrayList के लिए नहीं मिला है।प्रतिक्रिया वर्ग के लिए कोई संदेश बॉडी लेखक नहीं मिला है ArrayList

@POST 
@Path("/{scope}/{application}/tables") 
@Produces("application/xml") 
public List<String> getTableNames(@PathParam("scope") String scope, 
    @PathParam("application") String application, Request request) { 

    // For example, I am returning a list of String 
    return new ArrayList<String>(4); 
} 

कृपया मेरी मदद करो:

मैं इस प्रकार कोड है। अग्रिम धन्यवाद

उत्तर

19

एक सूची वापस करने के लिए, इसे @XmlRootElement पर एक कंटेनर में सबसे अच्छी तरह से लपेटें और उस कंटेनर को अपनी सूची फ़ील्ड के रूप में दें, @XmlElement के रूप में एनोटेटेड।

तो जैसा

:

@XmlRootElement 
public class Container { 
    @XmlElement 
    public List yourlist; 
} 
+2

और यह सुनिश्चित करें कि 'Container' की डिफ़ॉल्ट बनाने के लिए, कोई आर्ग निर्माता :) – vikingsteve

3

this देखें, इसकी जेएक्सबी आपको समस्याएं दे रही है, यह नहीं जानता कि एक सूची को अनमशाल/मार्शल कैसे करें।

-1

GenericEntity उपयोग करके देखें।

Response.ok(new GenericEntity<List<String>>(yourCollectionOfStrings) {}).build(); 
0

रैपिंग से बचने के लिए, कोई जैक्सन का उपयोग कर सकता है। इसे कैसे करें, आप एक समान प्रश्न के लिए मेरे answer का पालन कर सकते हैं।

+1

आपको लगता है कि विन्यास की जरूरत है अगर आप JSON के रूप में प्रतिक्रिया वापस करना चाहते हैं। वास्तव में यदि आप इस प्रश्न के लिए इस उत्तर को देखते हैं (http://stackoverflow.com/questions/24653329/jaxrs-client-cont-find-message-body-writer/25536584#25536584) आप इस तरह की सरल कॉन्फ़िगरेशन देखेंगे काम करेगा। लेकिन वह एक एक्सएमएल प्रतिक्रिया के रूप में चाहता है। – saibharath

0

मैंने जैक्सन जैक्सबजेसनप्रोवाइडर का उपयोग करके इसे हल कर लिया है। कोई जावा कोड संशोधित करने की जरूरत नहीं है। वसंत context.xml और मेवेन pom.xml में कुछ बदलाव, https://stackoverflow.com/a/30777172/1245231

0

मैंने डोमेन परत के प्रोजेक्ट स्कोप के मौजूदा ऑब्जेक्ट में सूची को जोड़ा है।

यह परियोजना के लिए अधिक प्रासंगिक था और बॉक्स के बाहर भी काम करता था: XmlRootElement का परीक्षण करने के लिए कोई आवश्यकता नहीं है, लेकिन उस ऑब्जेक्ट के लिए मौजूदा टेस्ट केस की सूची के लिए परीक्षण डेटा + तर्क जोड़ें।

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