json 호출시 문제입니다.
- 작성자 :
- 홍*록
- 작성일 :
- 2013-08-23 16:12:18
- 조회수 :
- 3,090
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
jsp 에서
json을 호출하면 컨트롤러 까지 잘갑니다.
컨트롤러 부분에 @ResponseBody 을 호출하고 return 할때
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
이런에러가 납니다. 사이트에서 찾아보니
pom.xml 에
<!-- json start -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.0</version>
</dependency>
<!-- json end -->
dispatcher-servlet.xml 설정에
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
<!-- restful json START -->
<bean name="cgr/egovCategoryList" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false"/>
</bean>
<!-- restful json END -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="order" value="0" />
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false"/>
</bean>
</list>
</property>
</bean>
이렇게 설정까지 했습니다. 그런데도 같은에러가 발생하는데 해결방안을 좀알고 싶습니다.
json을 호출하면 컨트롤러 까지 잘갑니다.
컨트롤러 부분에 @ResponseBody 을 호출하고 return 할때
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
이런에러가 납니다. 사이트에서 찾아보니
pom.xml 에
<!-- json start -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.0</version>
</dependency>
<!-- json end -->
dispatcher-servlet.xml 설정에
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
<!-- restful json START -->
<bean name="cgr/egovCategoryList" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false"/>
</bean>
<!-- restful json END -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="order" value="0" />
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="false"/>
</bean>
</list>
</property>
</bean>
이렇게 설정까지 했습니다. 그런데도 같은에러가 발생하는데 해결방안을 좀알고 싶습니다.
A
안녕하세요. 홍무록님.
2가지 가능성이 있을 것 같습니다.
우선, 호출하신 URL 상의 확장자가 ContentNegotiatingViewResolver에 등록된 mediaTypes에 해당되는 json으로 호출되었는지 확인 부탁드립니다. (예를 들면, /springrest/cgr.json 으로 호출되어야 확장자에 따라 동작함)
다음으로는 <mvc:annotation-driven />와 같이 별도 MVC 설정을 사용하시는 경우라면 jacksonMessageConverter나 AnnotationMethodHandlerAdapter 등의 설정을 제외시켜 놓으시면 되실 것 같습니다.
이 경우는 사용된 library에 따라 ContentNegotiatingViewResolver 역할을 자동으로 등록하도록 되어 있습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
2가지 가능성이 있을 것 같습니다.
우선, 호출하신 URL 상의 확장자가 ContentNegotiatingViewResolver에 등록된 mediaTypes에 해당되는 json으로 호출되었는지 확인 부탁드립니다. (예를 들면, /springrest/cgr.json 으로 호출되어야 확장자에 따라 동작함)
다음으로는 <mvc:annotation-driven />와 같이 별도 MVC 설정을 사용하시는 경우라면 jacksonMessageConverter나 AnnotationMethodHandlerAdapter 등의 설정을 제외시켜 놓으시면 되실 것 같습니다.
이 경우는 사용된 library에 따라 ContentNegotiatingViewResolver 역할을 자동으로 등록하도록 되어 있습니다.
그럼, 즐거운 하루되십시오.
감사합니다.