jackson 설정하고 커스텀 객체를 리턴하면 오류가 발생합니다. 406 에러가 발생합니다.
- 작성자 :
- 개*자
- 작성일 :
- 2022-01-14 13:52:54
- 조회수 :
- 3,020
- 구분 :
- 개발환경 / 3.7
- 진행상태 :
- 완료
Q
@RestController
public class UserMemberApiController {
@RequestMapping(value= "/api/v2/user/member/select", produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody CustomResponse<Integer> testSelect() throws Exception {
CustomResponse<Integer> resp = new CustomResponse<>();
return resp;
}
}
웹페이지에러:
406 에러가 발생합니다.
서버단에서 에러:
DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [samok.v2.user.UserMemberApiController@6030e5dd]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [samok.v2.user.UserMemberApiController@6030e5dd]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
DEBUG org.springframework.security.web.context.HttpSessionSecurityContextRepository - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession.
DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'action': assuming HandlerAdapter completed request handling
DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request
DEBUG org.springframework.security.web.context.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed
DEBUG org.springframework.security.web.access.ExceptionTranslationFilter - Chain processed normally
public class UserMemberApiController {
@RequestMapping(value= "/api/v2/user/member/select", produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody CustomResponse<Integer> testSelect() throws Exception {
CustomResponse<Integer> resp = new CustomResponse<>();
return resp;
}
}
웹페이지에러:
406 에러가 발생합니다.
서버단에서 에러:
DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [samok.v2.user.UserMemberApiController@6030e5dd]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [samok.v2.user.UserMemberApiController@6030e5dd]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
DEBUG org.springframework.security.web.context.HttpSessionSecurityContextRepository - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession.
DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'action': assuming HandlerAdapter completed request handling
DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request
DEBUG org.springframework.security.web.context.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed
DEBUG org.springframework.security.web.access.ExceptionTranslationFilter - Chain processed normally
환경정보
-
- OS 정보 : 윈도우10 이클립스
- 표준프레임워크 버전 : 3.7
- JDK(JRE) 정보 : 1.7
- WAS 정보 : 톰캣
- DB 정보 : mysql
- 기타 환경 정보 :
1. pom.xml 설정
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
2. servlet.xml 설정
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="objectMapper" class="org.springframework.http.converter.json.JacksonObjectMapperFactoryBean" />
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>
A
안녕하세요.
표준프레임워크센터 입니다.
406 에러가 발생하는것으로 보아
Response 헤더가 application/json으로 수신되지 않는듯 합니다.
servlet.xml 설정에서 다음과 같이
변경이 필요할것으로 보입니다.
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
===>
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
그외에 설정은 필요하지 않아 보입니다.
공통컴포넌트에서 다음 설정을
비교하여 수정하시면 될듯 합니다.
/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml
참고로 공통컴포넌트는 다음에서 다운로드가 가능하니
참고 하시기 바랍니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=49
감사합니다.
표준프레임워크센터 입니다.
406 에러가 발생하는것으로 보아
Response 헤더가 application/json으로 수신되지 않는듯 합니다.
servlet.xml 설정에서 다음과 같이
변경이 필요할것으로 보입니다.
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
===>
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
그외에 설정은 필요하지 않아 보입니다.
공통컴포넌트에서 다음 설정을
비교하여 수정하시면 될듯 합니다.
/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml
참고로 공통컴포넌트는 다음에서 다운로드가 가능하니
참고 하시기 바랍니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=49
감사합니다.