2013-03-07 45 views
6

Tôi hiểu rằng các bộ lọc tùy chỉnh có thể được sử dụng trong phiên bản trước của Spring MVC để triển khai JSONP. Ngoài ra this example mô tả một phương pháp để thực hiện JSONP trong Spring MVC 3.1 bằng cách mở rộng lớp MappingJacksonHttpMessageConverter và sửa đổi các đối tượng miền.Thực hiện JSONP trong Spring MVC 3.2

Có phương pháp đơn giản (hoặc thông thường) nào để giải quyết JSONP trong Spring MVC 3.2 ngoài việc sử dụng các phương pháp trên không? Tôi không thấy JSONP được giải quyết trong tài liệu Spring 3.2.

Trả lời

3

đơn giản như thế này

@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

Tôi mới với jackson api, những gì tôi nên sử dụng ở vị trí của _callback_ sử dụng trong 'mới JSONPObject (callback, bản đồ) '. –

+0

'callBack' là tên của hàm sẽ được gọi trong javascript sau khi truy vấn này kết thúc. –

+0

ok. Nó sẽ hữu ích nếu được cung cấp với một số ví dụ làm việc hoặc bất kỳ trang web nào giải thích thêm một chút về nó. –

0

Dưới đây là cách đơn giản nhất để xử lý tình huống này

@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

tôi đang tìm kiếm một đơn giản, cách tiếp cận OOB cho cách tiếp cận JSONP (JSONP/CORS nên được xây dựng -in IMO ... không yêu cầu bất kỳ mã tùy chỉnh nào) ... không bao giờ tìm thấy bất kỳ ... nhưng sau khi liên hệ với nhóm Spring, hóa ra là JSONP is now supported OOB in 4.0.5 via MappingJacksonJsonView và hỗ trợ tích hợp cho CORS để theo dõi sau này.