2011-05-17 8 views
6

मैं कॉलबैक पैरामीटर भेज सकता हूं और यह तब तक पूरी तरह से काम करता है जब तक मैं केवल स्ट्रिंग जैसे कुछ आदिम प्रकार भेज रहा हूं। लेकिन वही बात सबसे सरल POJO के लिए भी काम नहीं करती है। प्राइमफेस गाइड का कहना है कि RequestContext.addCallbackParam() विधि POJO को संभाल सकती है और यह उन्हें JSON में कवर करती है। मुझे नहीं पता कि यह मेरे मामले में क्यों काम नहीं कर रहा है।प्राइमफेस के RequestContext का उपयोग कर कॉलबैक पैरा के रूप में POJO कैसे भेजें?

क्या किसी ने ऐसा किया है?

+0

कृपया अपना समाधान उत्तर के रूप में पोस्ट करें (भले ही यह आपके अपने प्रश्न का उत्तर हो)। –

उत्तर

6

समाधान मिला! -------------------------------------------------- -------------------

मैंने कुछ शोध किया और इस प्रश्न का उत्तर पाया।

और समाधान जेएसओएन ऑब्जेक्ट्स में जावा ऑब्जेक्ट्स को कनवर्ट करने के लिए कुछ JSON लाइब्रेरी (अभी मैं जीएसओएन का उपयोग कर रहा हूं) का उपयोग करना था।

नई Gson()। ToJson (someJavaObj)

रिटर्न स्ट्रिंग। JS को फिर से जेएसओएन में बदलने के लिए जेएस 'eval या कुछ जेएस लाइब्रेरी के फ़ंक्शन का उपयोग करके स्ट्रिंग को पैरामीटर और क्लाइंट साइड के रूप में भेजें।

असल में, यह बहुत साफ और सरल था।

क्षमा करें, मैंने वास्तव में समाधान पोस्ट नहीं किया है। ध्यान में रखते हुए CommandButton -

<p:commandLink action="#{pieDataProvider.retrievePieData}" oncomplete="feedPieData(xhr, status, args);" value="Pie chart demo" update="pieData" /> 

जावास्क्रिप्ट समारोह -

function feedPieData(xhr, status, args) { 
    var categories = eval('(' + args.categories + ')'); 
    var itemCounts = eval('(' + args.itemCounts + ')'); 

    options.xAxis.categories = categories; 

    var series = { 
     data: [] 
    }; 

    series.name = new Date().toString(); 
    series.data = itemCounts; 

    options.series = [series]; 

    chart = new Highcharts.Chart(options); 
} 

मैं: - समर्थन सेम में

कार्रवाई विधि -

public void retrievePieData() { 
    List<String> categories = new ArrayList<String>(); 

    categories.add("Electronic"); 
    categories.add("Food"); 
    categories.add("Liguor"); 
    categories.add("Stationary"); 
    categories.add("Mechanical"); 

    List<Integer> itemCounts = new ArrayList<Integer>(); 

    itemCounts.add(5); 
    itemCounts.add(20); 
    itemCounts.add(1); 
    itemCounts.add(50); 
    itemCounts.add(10); 

    RequestContext reqCtx = RequestContext.getCurrentInstance(); 
    reqCtx.addCallbackParam("categories", new Gson().toJson(categories)); 
    reqCtx.addCallbackParam("itemCounts", new Gson().toJson(itemCounts)); 
} 

PrimeFaces पी नीचे मेरी समाधान है वास्तव में किसी भी सुझाव या राय की सराहना और स्वागत करेंगे। धन्यवाद!

+0

आप 'org.primefaces.json। *' का भी उपयोग कर सकते हैं जो कि http://www.json.org/javadoc/org/json/JSONObject.html पर आधारित है और पहले ही प्राइमफेस के साथ शामिल है। –

+0

@ बेशगुरुंग मैंने जेसन में कनवर्ट करने के समान काम किया लेकिन जैक्सन इंस्टीट जीएसओएन का इस्तेमाल किया। Http resonse में डेटा को इक्का डबल कोट के लिए बैकस्लैश है, इसके कारण मैं इसे स्क्रिप्ट में पार्स नहीं कर सकता। क्या आपके पास एक ही समस्या है? – user1595858

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