2012-06-23 12 views
10

मैं Play का उपयोग कर रहा हूँ! फ्रेमवर्क 2.0 और मैं इस ढांचे में नया हूं। मैं सफेद एचटीएमएल पेज में अपने मॉडल के सिर्फ एक जेसन प्रतिनिधित्व कैसे वापस कर सकता हूं?प्ले करें! फ्रेमवर्क रिटर्न जेसन प्रतिक्रिया

क्या मैं कर रहा हूँ

public static void messagesJSON(){ 
    List<Message> messages = Message.all(); 
    renderJSON(messages); 
} 

है लेकिन मैं त्रुटि मिलती है: यूनिट एक हैंडलर

उत्तर

10

विधि का प्रयोग कर रहे प्ले 1.x से है के रूप में वापस एक विधि का उपयोग नहीं किया जा सकता है, यह थोड़ा है प्ले 2.0 में अलग। प्रलेखन से, यहाँ कैसे एक sayHello JSON अनुरोध

@BodyParser.Of(Json.class) 
public static Result sayHello() { 
    ObjectNode result = Json.newObject(); 
    String name = json.findPath("name").getTextValue(); 
    if(name == null) { 
    result.put("status", "KO"); 
    result.put("message", "Missing parameter [name]"); 
    return badRequest(result); 
    } else { 
    result.put("status", "OK"); 
    result.put("message", "Hello " + name); 
    return ok(result); 
    } 
} 

क्या आप पूछ रहे हैं return ok(result) जो एक JSON ObjectNode देता है इस का महत्वपूर्ण हिस्सा उत्तर देने के लिए का एक उदाहरण है।

+0

इसका मतलब "इंडेक्स" रिटर्न प्रकार के रूप में क्या है? ऐसा लगता है कि संकलक इसे समझ में नहीं आता है, @ बॉडीपार्सर भी त्रुटि (टाइप मिस्चैच) क्या यह कोड आपके लिए काम करता है? या आप आयात और वर्चुअल की अधिक व्यापक तस्वीर दिखा सकते हैं। – Stas

+1

@Stas, स्रोत दस्तावेज़ों में एक टाइपो था, इसे प्ले 2.0 नियंत्रक में प्रत्येक 'एक्शन' के रूप में 'परिणाम' वापस करना चाहिए। – biesior

+0

अच्छी जगह @Marcus। और गीथूब पर भी दस्तावेज़ीकरण को अद्यतन करने के लिए धन्यवाद। – Codemwnci

37

के बारे में return ok(Json.toJson(Moments.all());

+4

यह एक और अधिक उपयोगी उत्तर है क्योंकि यह दस्तावेज़ों में दिखाए गए जेसन ऑब्जेक्ट्स मैन्युअल रूप से बनाने के बजाय स्वचालित रूप से पूरे ऑब्जेक्ट ग्राफ़ को जेसन में प्रस्तुत करेगा। – prule

+0

मेरा मानना ​​है कि आप जेएसओएन संरचना के साथ-साथ जैक्सन एनोटेशन के माध्यम से अनुकूलित कर सकते हैं। – Sudhir

+0

एक कक्षा संदर्भ जोड़ें: – Alex

2

अपनी सूची से एक नया मॉडल बनाएं कैसे:

public static Finder<Long,Business> find = new Finder(Long.class, Business.class); 

यह प्रदर्शित करेगा:

public static Result getBusinesses(){ 
    List<Business> businesses = new Model.Finder(String.class, Business.class).all(); 
    return ok(Json.toJson(businesses)); //displays JSON object on empty page 
} 

Business.java वर्ग में मैं एक स्थिर चर है जेएसओएन ऑब्जेक्ट लोकहोस्ट पर: 9000/getBusinesses मार्ग जोड़ने के बाद:

GET  /getBusinesses controllers.Application.getBusinesses() 
संबंधित मुद्दे