[SPRING] Spring MVC와 다중 응답 유형으로 JSONP를 지원하는 방법
SPRINGSpring MVC와 다중 응답 유형으로 JSONP를 지원하는 방법
요청한 따라 HTML 또는 JSON을 반환하는 컨트롤러에 메서드가 있습니다. 다음은이 질문에서 발견 할 수있는 방법에 대한 정보를 바탕으로 작성된 그런 방법의 해체 된 예입니다.
@RequestMapping(value="callback")
public ModelAndView callback(@RequestParam("c") String c) {
Map response = new HashMap<String, String>();
response.put("foo", "bar");
return new ModelAndView("fake", "data", new JSONPObject(c, response));
}
JSONPObject를 모델에 넣으려면 HTML이 요청 된 경우 렌더링하는 뷰에서이 뷰에 도달 할 수 있어야합니다. 그러나 이것은 JSON을 콜백으로 렌더링 할 때 문제가된다.
curl 'http://localhost:8080/notes/callback.json?c=call'
{"data"call(:{"foo":"bar"})}
보시다시피 모델의 "데이터"슬롯에 데이터를 넣으므로 모델이 JSON으로 렌더링 될 때 여분의 래핑이 있습니다. 내가 찾고있는 것은 렌더링 된 JSON (기술적으로 JSONP)이다.
call({"data":{"foo":"bar"}})
렌더링 중에 JSONPObject에 액세스하는보기를 반환하는 기능을 중단하지 않고 어디로 가려고하는지 알 수 있습니까?
해결법
-
==============================
1.JSONP를 Spring MVC와 함께 사용하는 방법입니다. 필요에 따라 JSONP를 수정하십시오.
JSONP를 Spring MVC와 함께 사용하는 방법입니다. 필요에 따라 JSONP를 수정하십시오.
서버 측 :
@RequestMapping(value="/notes/callback.json", method=RequestMethod.GET) public void jsonpCallback(@RequestParam("callback") String callback, HttpServletResponse response) { response.setContentType("text/javascript; charset=UTF-8"); PrintWriter out = response.getWriter(); out.print(callback + "(" + jsonDataString + ")"); }
클라이언트 측 :
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script> <script type="text/javascript"> function yourfunction() { jQuery.getJSON("http://localhost:8080/notes/callback.json?callback=?", function(data) { alert(data.someParam); }); } </script>
-
==============================
2.나는 이것을 알아 내었다. JSON을 렌더링 할 때 Spring은 내 구성에 따라 MappingJacksonJsonView를 사용하고 있습니다. 이 뷰에는지도에서 단일 항목을 찾아서 렌더링 전에 추출하도록 지시하는 속성이 있습니다. 이 속성을 설정하면 이제이 기능이 작동합니다.
나는 이것을 알아 내었다. JSON을 렌더링 할 때 Spring은 내 구성에 따라 MappingJacksonJsonView를 사용하고 있습니다. 이 뷰에는지도에서 단일 항목을 찾아서 렌더링 전에 추출하도록 지시하는 속성이 있습니다. 이 속성을 설정하면 이제이 기능이 작동합니다.
<property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" > <property name="extractValueFromSingleKeyModel" value="true" /> </bean> </list> </property>
from https://stackoverflow.com/questions/10323625/how-to-support-jsonp-with-spring-mvc-and-multiple-response-types by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Embedded Redis가 실제 Redis 서버에 연결하려고 시도하여 예외가 발생합니다. (0) | 2019.04.26 |
---|---|
[SPRING] Spring @Transactional을 사용한 TestNG 다중 스레드 테스트 (0) | 2019.04.26 |
[SPRING] Spring Data Neo4J 4.0.0 : BeforeSaveEvent가 실행되지 않습니까? (0) | 2019.04.26 |
[SPRING] 봄과 아약스 (0) | 2019.04.26 |
[SPRING] 휴식 컨트롤러에서 코러스 문제 제거 방법 (0) | 2019.04.26 |