2015-04-01 6 views
6

मैं एक दृश्य अनुरोध को मानचित्र बनाने का प्रयास कर रहा हूं और एक JSON ऑब्जेक्ट एक साथ। इसके लिए मैं जैक्सन JSON प्रदातास्प्रिंग कंट्रोलर रिटर्न व्यू और JSON एक साथ

का उपयोग कर रहा हूँ यहाँ मेरी नियंत्रक विधि

@RequestMapping(method = RequestMethod.GET, value = "/reports") 
public String getFiles(Model model) { 
    // 
    //build array list 
    // 
    return files; 
} 

है यह मेरे विचार देता है (WEB-INF/jsp/reports.jsp) ठीक है, तथापि JSON वस्तु है कि जैक्सन बनाता है, तो निश्चित रूप से मैं इस पर टिप्पणी करने की जरूरत के बिना @ResponseBody साथ विधि है जो http जवाबी कार्रवाई के लिए JSON वस्तु स्वतः लिखेंगे, और files ArrayList लौट ...

@RequestMapping(method = RequestMethod.GET, value = "/reports") 
@ResponseBody 
public ArrayList<String> getFiles(Model model) { 
    // 
    ///build array list 
    // 
    return files; 
} 

और JSON वस्तु वास्तव में दिया जाता है, बू एक नए दृश्य/खाली एचटीएमएल दस्तावेज़ में टी। क्या JSON ऑब्जेक्ट को वापस करना और एक ही समय में "reports.jsp" पर रीडायरेक्ट करना संभव है?

+2

कि मतलब नहीं है। एक अनुरोध == एक प्रतिक्रिया। आप या तो कुछ विशेषता में जेएसओएन स्टोर कर सकते हैं और जेएसपी में उस विशेषता का मूल्य पुनर्प्राप्त कर सकते हैं या आप जेएसओ प्राप्त करने के लिए जेएसपी और दूसरे को प्रस्तुत करने के लिए 2 अनुरोध भेज सकते हैं। –

+0

जो मैं जा रहा हूं वह है कि जब मैं "reports.jsp" पृष्ठ –

उत्तर

5

मुझे आपके पहले उदाहरण में लगता है कि आप वास्तव में के बजाय "reports" लौट रहे हैं। और यदि आप एक दृश्य वापस करना चाहते हैं, तो आप एक प्रतिक्रिया निकाय भी वापस नहीं कर सकते - आप केवल एक चीज वापस कर सकते हैं।

तो या तो आप इसे दो अनुरोधों में विभाजित करते हैं, या आप JSON को मॉडल में डालते हैं, और इसे जेएसपी में पुनर्प्राप्त करते हैं, उदा।

जावा:

ObjectMapper mapper = new ObjectMapper(); 
model.addAttribute("json", mapper.writeValueAsString(files)); 

JSP:

<script> 
    var files=${json}; 
</script> 
+0

पर क्लिक करता हूं तो JSON ऑब्जेक्ट बनाने के लिए धन्यवाद @ कूपन यह मेरे प्रश्न का उत्तर देता है। मैंने अभी तक ओबेक्टमैपर एपीआई में डुबकी डाली है, लेकिन क्या आपको पता है कि क्या यह JSON ऑब्जेक्ट में प्रत्येक मान के लिए डिफ़ॉल्ट "कुंजी" परिभाषित कर सकता है? (यानी, ["लेबल": "मान 1", "लेबल": "मान 2"]) –

+2

'[" लेबल ":" मान 1 "," लेबल ":" मान 2 "]' मान्य नहीं होगा JSON - आपके पास एक ही नाम के साथ दो गुण नहीं हो सकते हैं। हो सकता है कि आप '[{" लेबल "," value1 "}, {" लेबल "," value2 "}] '... चाहते हैं ... आपको अपने अपेक्षित इनपुट और वांछित आउटपुट – CupawnTae

+0

के साथ एक नया प्रश्न पोस्ट करना चाहिए, यही मेरा मतलब है, मैं इसे नीचे ट्रैक करेंगे। एक बार फिर धन्यवाद! –

2

आप या तो स्वयं जेसन ऑब्जेक्ट बना सकते हैं और मॉडल में जोड़ सकते हैं (इस मामले में वापसी दृश्य) या दृश्य वापस लौटाएं और फिर पेज लोड होने के बाद एक अन्य फ़ंक्शन कॉल करें जो AJAX ऑब्जेक्ट देता है।

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