2010-10-07 18 views
6

से लोड ग्रिड डेटा मैं SmartGwt के साथ शुरू करने का प्रयास कर रहा हूं। मैं XJSONDatasource का उपयोग कर रहा हूं SmartClient पर एक उदाहरण पृष्ठ पर क्रॉस-डोमेन कॉल करने के लिए जिसमें JSON डेटा है। जब मैं कोड चलाता हूं, हालांकि, एक पॉपअप आता है जो कहता है "आपके मानदंड से मेल खाने वाले रिकॉर्ड्स ढूंढना ..." यह कभी नहीं जाता है, और डेटा लोड नहीं होता है। मैं SmartGwt के मुफ्त संस्करण का उपयोग कर रहा हूं (मेरी कंपनी ने कहा है कि हम यही उपयोग करेंगे)। उम्मीद है कि मैं बस कुछ स्पष्ट याद कर रहा हूँ।SmartGwt - JSON

DataSource dataSource = new XJSONDataSource(); 
    dataSource.setDataTransport(RPCTransport.SCRIPTINCLUDE); 
    dataSource.setDataFormat(DSDataFormat.JSON); 

    dataSource.setDataURL("http://www.smartclient.com/smartgwt/showcase/data/dataIntegration/json/contactsData.js"); 
    DataSourceTextField nameField = new DataSourceTextField("name", "name"); 

    nameField.setValueXPath("name"); 

    dataSource.setFields(nameField); 

    ListGrid grid = new ListGrid(); 
    grid.setDataSource(dataSource); 
    grid.setWidth100(); 
    grid.setHeight(100); 
    grid.setAutoFetchData(true); 
    grid.draw(); 
+0

आप एक्स JSON के साथ इस सवाल के साथ-साथ टैग करना होगा – anataliocs

उत्तर

4

मैं यहाँ डॉक्स से देखें: http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/data/XJSONDataSource.html

ध्यान दें, जैसा कि ऊपर ट्यूटोरियल में संकेत दिया, सर्वर एक JavaScript फ़ंक्शन न सिर्फ डेटा बाहर लेखन के लिए जिम्मेदार है, लेकिन भी कॉल करें कि क्लाइंट को बताता है कि प्रतिक्रिया पहुंच गई है। ग्राहक का नाम "कॉलबैक" URL पैरामीटर के रूप में कॉल करने के लिए फ़ंक्शन का नाम पास करता है।

लेकिन वहाँ पेज पर कोड में ऐसी कोई कॉलबैक आप www.smartclient.com/smartgwt/showcase/data/dataIntegration/json/contactsData.js

3

पर लिंक करते हैं अपने smartGWT डेटा स्रोत एक बनाता है

http://www.smartclient.com/smartgwt/showcase/data/dataIntegration/json/contactsData.js 

(आप डेटा स्रोत एक जावा अनुप्रयोग के लिए एक कॉल कर रहा है, तो क्या यह उत्तर की तह तक जाना)

अनुरोध अपने डेटा स्रोत कर देगा किसी GET पैरामीटर शामिल होंगे बुलाया: इस URL पर फोन कॉलबैक जो इस तरह दिखता है:

callback=isc.Comm._scriptIncludeReply_0 

स्क्रिप्ट, contactData.js, इस जीईटी पैरामीटर को कैप्चर करने की आवश्यकता होगी।

संपर्क डेटा।

जावास्क्रिप्ट मापदंडों समारोह को पुनः प्राप्त:

function getParameter (queryString, parameterName) { 
    // Add "=" to the parameter name (i.e. parameterName=value) 
    var parameterName = parameterName + "="; 
    if (queryString.length > 0) { 
     // Find the beginning of the string 
     begin = queryString.indexOf (parameterName); 
     // If the parameter name is not found, skip it, otherwise return the value 
     if (begin != -1) { 
     // Add the length (integer) to the beginning 
     begin += parameterName.length; 
     // Multiple parameters are separated by the "&" sign 
     end = queryString.indexOf ("&" , begin); 
     if (end == -1) { 
     end = queryString.length 
     } 

jQuery पुनः प्राप्त मानकों से कार्य

http://ajaxcssblog.com/jquery/url-read-request-variables/ 

के बाद आप कॉलबैक पैरामीटर का मान प्राप्त js URL से पैरामीटर पुनः प्राप्त करने के एक पुस्तकालय में शामिल करने की आवश्यकता होगी आप JSON के साथ फ़ंक्शन नाम को प्रतिक्रिया के शरीर में पैरामीटर के रूप में लिखेंगे:

isc.Comm._scriptIncludeReply_0({"item": [ {"id": "1","name": "Monkey"}, 
{"id": "2","name": "Tree"}, 
{"id": "3","name": "Banana"} ] }) 

तो जावास्क्रिप्ट कोड कुछ इस तरह दिखेगा:

Response.Write(getParameter(URLrequestFromDatasourceString,"callback") + " (" + JSON + ")"); 

जावा

अपने smartGWT डेटा स्रोत एक जावा ऐप्लिकेशन URL को फोन करेगा तो:

http://www.smartclient.com/getJson.htm

आपका जावा नियंत्रक एक ही काम करेगा लेकिन यह mu है ch आसान

String callbackString = request.getParameter("callback"); 

response.setContentType("text/X-JSON"); 
response.getWriter().write(callbackString + " (" + JSONstring + ") "); 
response.setStatus(HttpServletResponse.SC_OK); 

Also, here is a link to a blog post on the issue

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

  • कोई संबंधित समस्या नहीं^_^