2013-03-07 2 views
6

मैं समझता हूँ कि कस्टम फ़िल्टर JSONP लागू करने के लिए वसंत MVC के पुराने संस्करण में इस्तेमाल किया जा सकता है। इसके अतिरिक्त this exampleMappingJacksonHttpMessageConverter कक्षा को विस्तारित करके और डोमेन ऑब्जेक्ट्स को संशोधित करके स्प्रिंग एमवीसी 3.1 में JSONP को लागू करने के लिए एक विधि का वर्णन करता है।कार्यान्वयन JSONP 3.2

वहाँ उपरोक्त विधि का प्रयोग के अलावा वसंत MVC 3.2 में JSONP संबोधित करने के लिए एक सरल (या पारंपरिक) विधि है? मैंने जेएसओएनपी को स्प्रिंग 3.2 दस्तावेज में बिल्कुल भी नहीं देखा था।

उत्तर

3

आसान तरीका सबसे आसान तरीका है इस परिदृश्य

@GET 
    @Path("/jsonp") 
    @Produces("application/json") 
    public Response jsonp(@QueryParam("data") String json, 
      @QueryParam("callback") String callBack  
      @Context HttpServletRequest request) throws Exception { 

    String jsonResponse= "{ \"sttaus\" :\"some data\" }"; 
    try{ 
     .. // do your business logic  

    }catch(Exception e){ ... } 

    return Response.status(201).entity(callBack+"("+jsonResponse+")").build(); 
    } 
+0

मैं जैक्सन एपीआई के साथ नए कर रहा हूँ के साथ वास्तव में यह कर सकता हूँ, मैं 'नई JSONPObject (कॉलबैक, नक्शे में इस्तेमाल _callback_ के स्थान पर क्या इस्तेमाल करना चाहिए) '। –

+0

'कॉलबैक' फ़ंक्शन का नाम है जिसे इस क्वेरी के समाप्त होने के बाद जावास्क्रिप्ट में बुलाया जाएगा। –

+0

ठीक है। यह उपयोगी होगा अगर कुछ काम करने वाले उदाहरण या किसी भी साइट के साथ प्रदान किया जाता है जो इसमें थोड़ा और बताता है। –

0

आप बस अपनी परियोजना पर एक निर्भरता के रूप में भाग्य सिल्वा द्वारा वसंत-jsonp-समर्थन का उपयोग कर सकते हैं।

https://github.com/bhagyas/spring-jsonp-support

अधिक जानकारी README.md फ़ाइल पर उपलब्ध है। इस

@RequestMapping(value = "/jsonp", method = RequestMethod.GET) 
@ResponseBody 
public String jsonp(@RequestParam("c")String callBack) throws Exception{ 
    ObjectMapper objectMapper = new ObjectMapper(); 
    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("data", "<p>jsonp data<p>"); 
    return objectMapper.writeValueAsString(new JSONPObject(callBack,map)); 
} 
1

मैं JSONP दृष्टिकोण के लिए एक सरल, OOB दृष्टिकोण के लिए देख रहा था को संभालने के लिए है (JSONP/CORS बनाया जाना चाहिए -एमएमओ में ... किसी भी कस्टम कोड की आवश्यकता नहीं है) ... कभी भी कोई नहीं मिला ... लेकिन स्प्रिंग टीम के साथ पहुंचने के बाद, यह पता चला कि JSONP is now supported OOB in 4.0.5 via MappingJacksonJsonView और सीओआरएस के बाद में अंतर्निहित समर्थन का पालन करना है।