2009-10-15 16 views
6

मैं जेएसपी के लिए नया हूं जो मेरे साथ इतना बेकार है। मेरे पास एक जेएसपी है जहां मैं Google विज़ुअलाइज़ेशन API का उपयोग करके चार्ट बनाने के लिए जावास्क्रिप्ट ढांचे का उपयोग कर रहा हूं।जेएसपी, जावास्क्रिप्ट, और जावा ऑब्जेक्ट्स

मेरा सर्वलेट साल के साथ बिक्री और पूर्णांक (बिक्री संख्या) के रूप में बिक्री हैशैप ऑब्जेक्ट को वापस कर रहा है।

मेरा जावास्क्रिप्ट Google चार्ट एपीआई में डेटा जोड़ने के लिए बिक्री ऑब्जेक्ट का उपयोग करता है जो मेरा चार्ट बनाता है। कोड:

sales = '<%= session.getAttribute("sales") %>'; 

बिक्री वस्तु मेरी js में hashmap हो जाता है, लेकिन यह एक लंबी स्ट्रिंग है। क्या मुझे इसे अपने जावास्क्रिप्ट में पार्स करना है या क्या कोई तरीका है कि यह स्वचालित रूप से हैशैप ऑब्जेक्ट को जावास्क्रिप्ट बिक्री ऑब्जेक्ट में ठीक से रखेगा?

उत्तर

2

जावा और जावास्क्रिप्ट पूरी तरह से अलग-अलग भाषाएं हैं। जावास्क्रिप्ट को पता नहीं है कि जावा हैश मैप ऑब्जेक्ट के साथ क्या किया जाता है (वास्तव में आपके उदाहरण में आपको हैश मैप.टोस्ट्रिंग() का आउटपुट मिल जाएगा)। आपको इसे किसी रूप में क्रमबद्ध करना होगा कि जावास्क्रिप्ट समझ जाएगा, उदाहरण के लिए। JSON।

+0

इसका मानचित्र के बजाय JSON स्ट्रिंग वापस जाने के लिए बेहतर है, पहली जगह में। मैं इसे उस तरह चाहता हूं। जावास्क्रिप्ट में इसे करना ठीक है। +1 –

0

सभी कोड के इस टुकड़े

sales = '<%= session.getAttribute("sales") %>'; 

करता प्रिंट HTML आउटपुट को session.getAttribute("sales") का मूल्य है। आउटपुट को प्रारूपित करने के तरीके के बारे में आपके तर्क पर किसी भी तर्क के बिना, जावा केवल उस ऑब्जेक्ट पर .toString() पर कॉल करेगा - जो डिफ़ॉल्ट कार्यान्वयन (जब तक आप इसे ओवरराइड नहीं करते) आमतौर पर [email protected] जैसा दिखने वाला आउटपुट होता है।

तो संक्षिप्त उत्तर यह है कि हाँ आपको जावा पक्ष पर कुछ तर्क डालना होगा, जहां तक ​​आप अपनी ऑब्जेक्ट/डेटा संरचना को HTML दस्तावेज़ में आउटपुट करना चाहते हैं।

1

JSON का उपयोग करने का प्रयास करें जो आपको जेसन (जावा स्क्रिप्ट ऑब्जेक्ट नोटेशन) में अपने जावा ऑब्जेक्ट का वर्णन करने की अनुमति देगा, इस तरह आप वर्णित वस्तु को सीधे जावास्क्रिप्ट में लोड कर सकते हैं।

+0

हां, मैं भी इसे पसंद करता हूं। मैप के बजाए एक JSON स्ट्रिंग को पहले स्थान पर वापस करना बेहतर होगा। +1 –

4

आप अभ्यस्त (लेकिन आप कर सकते थे!) एक बाहरी json पुस्तकालय का उपयोग करने की जरूरत है - आप सीधे तरह एक जावास्क्रिप्ट चर में json प्रिंट कर सकते हैं:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> 
<script> 
(function(){ 
    var sales = { 
    <c:forEach var="entry" items="${requestScope['sales'].entrySet}" varStatus="counter"> 
     '${entry.key}' : ${entry.value} //outputs "2000" :1234 , 
     <c:if test="${!counter.last}">, </c:test> 
    </c:foreach> 
    }; 
    //js code that uses the sales object 
    doStuffWith(sales); 
})() 
</script> 
+0

मैप के बजाए एक JSON स्ट्रिंग को पहले स्थान पर वापस करना बेहतर है। मैं इसे उस तरह चाहता हूं। यह भी ठीक है। +1 –

+0

एक JSON स्ट्रिंग लौटने में समस्या यह है कि आप नियंत्रक में डेटा की गणना के साथ डेटा की प्रस्तुति दे रहे हैं। मानचित्र पर लौटने के फायदे हैं कि अगली परत क्लाइंट के लिए इसे और अधिक उपयुक्त में बदल सकती है (मान लेना एक नक्शा एक सामान्य डेटा संरचना है जिसका उपयोग कॉमस्ट्रॉलर परत और दृश्य परत के बीच संवाद करने के लिए किया जा सकता है)। – Chii

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