2012-10-05 18 views
6

मैं अपने JSON ऑब्जेक्ट को जावास्क्रिप्ट से Struts2 एक्शन में भेजना चाहता हूं।JSON Jquery स्ट्रैट्स 2 एक्शन

नमूना JSON वस्तु

{ 
     "lists":["list1","list2","list3","list4","list5"], 
     "maps": { 
      "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
     }, 
     "number1":123456789, 
     "numberarray1":[1,2,3,4,5,6,7,8,9], 
     "string1":"A", 
     "stringarray1":["A1","B1"] 
    } 

मेरे Jquery अजाक्स

$.ajax({ 
    type: 'POST', 
    url: 'json/JSON.action', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    async: false , 
    contentType: 'application/json; charset=utf-8', 
    success: function(){window.alert('Done');} 
}); 

Struts.xml config

<action name="JSON" class="com.actions.json.JsonAction" method="getJSON"> 
    <result type="json"/> 
</action> 

मेरे कार्रवाई कक्षा

public class JsonAction extends ActionSupport { 


    private String data; 


    public String getJSON() { 


     return ActionSupport.SUCCESS; 
    } 

    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 



} 

मेरी समस्या यह है कि एक्शन क्लास में JSON ऑब्जेक्ट कैसे प्राप्त करें।

नोट: JSON ऑब्जेक्ट के पोस्ट सफल हुआ .. मैं तो बस कैसे कार्रवाई कक्षा के माध्यम से इसे प्राप्त करने के लिए पता नहीं है .. कृपया मदद धन्यवाद

+0

क्या आप अपनी एक्शन क्लास साझा कर सकते हैं। इसके अलावा आपने अपने struts.xml में परिभाषित प्रकार जेसन भी परिभाषित किया है और परिभाषित इंटरसेप्टर –

+0

'class =" coma, ctions.json.JsonAction "' टाइपो 'कोमा, कैशन' में टाइप किया है? – Daniel

+0

अच्छी तरह से आप पहले ही प्लगइन (जेसन) का उपयोग कर रहे हैं ताकि प्लगइन अनुरोध से पोस्ट किए गए JSON डेटा के साथ अपनी एक्शन क्लास भरने में सक्षम हो, आपको बस जेसन प्रारूप और कुछ मामूली नियमों की देखभाल करने की आवश्यकता है, प्लगइन पर एक नज़र डालें डॉक्स। –

उत्तर

6
  1. आपके struts.xml प्रविष्टि में कोई गलती है
  2. क्या आपने struts.xml में टाइल्स परिणाम और इंटरसेप्टर परिभाषित किया है। Please see this link
  3. जो सर्वर आप सर्वर पर भेज रहे हैं, में data कुंजी नहीं है। तो यह हमेशा शून्य होगा। चूंकि जेसन वस्तुओं के रूप में दर्शाया गया है। आपको JSON को जावा ऑब्जेक्ट्स में इस तरह से कनवर्ट करने की आवश्यकता है।

दृष्टिकोण 1.

lists,maps,number1,numberarray1,string1 और इतने पर के लिए setters बनाएँ। this link के शीर्ष पर, इसे करने का तरीका परिभाषित किया गया है। फिर आप इस तरह से सभी चर का उपयोग कर सकते हैं।

दृष्टिकोण 2. आपकी जावास्क्रिप्ट में एक नई वस्तु परिभाषित करें।

var sentData ={}; 
sentData ["sentData "] = data; 
// And in your ajax call , 
data: JSON.stringify(sentData), 

और अपनी क्रिया कक्षा में, इसके लिए गेटर्स और सेटर्स बनाएं।

Map<K.V> sentData = new HashMap<K,V>(); 

यह आपको मानचित्र के रूप में पूरी जेसन ऑब्जेक्ट देगा।

+0

मेरी समस्या यह है कि कार्रवाई में मेरा डेटा हमेशा शून्य के बराबर होता है – newbie

+0

मुझे समझ में नहीं आता – newbie

+0

यह काम नहीं कर सकता :( – newbie

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