2013-03-07 15 views
6

Ich verstehe, dass benutzerdefinierte Filter in früheren Version von Spring MVC verwendet werden können, um JSONP zu implementieren. Darüber hinaus beschreibt this example eine Methode zum Implementieren von JSONP in Spring MVC 3.1 durch Erweitern der MappingJacksonHttpMessageConverter Klasse und Ändern der Domänenobjekte.Implementierung von JSONP im Frühjahr MVC 3.2

Gibt es eine einfachere (oder konventionelle) Methode, um JSONP in Spring MVC 3.2 zu behandeln, abgesehen von den oben genannten Methoden? Ich habe JSONP in der Dokumentation zu Spring 3.2 überhaupt nicht gesehen.

Antwort

3

einfache Art und Weise wie dies

@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)); 
} 
+0

Ich bin neu mit jackson api, was soll ich anstelle von _callback_ in 'neuer JSONPObject (Rückruf Karte verwendet verwenden) '. –

+0

'callBack' ist der Name der Funktion, die nach Abschluss dieser Abfrage in JavaScript aufgerufen wird. –

+0

ok. Es wird hilfreich sein, wenn es mit einem Arbeitsbeispiel oder irgendeiner Seite versehen wird, die ein bisschen mehr darin erklärt. –

0

Hier ist der einfachste Weg ist, um dieses Szenario zu behandeln

@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(); 
    } 
1

Ich war für JSONP Ansatz für einen einfacheren, OOB Ansatz suchen (JSONP/CORS gebaut werden soll -in IMO ... benötigen keine benutzerdefinierten Code) ... nie gefunden ... aber nach dem Kontakt mit dem Spring-Team stellt sich heraus, dass JSONP is now supported OOB in 4.0.5 via MappingJacksonJsonView und integrierte Unterstützung für CORS später folgen.