2016-06-27 1 views
0

누군가 나를 도와 줄 수 있습니까?봄에 메시지 변환기에 LocalDate 매퍼 추가

REST API를 호출하는 MVC 애플리케이션에 내 REST 애플리케이션에서 Java 8 LocalDate를 JSON으로 변환해야하며 그 반대의 경우도 마찬가지입니다. 기본 JacksonJAXbJSONProvider가 LOCALDATE을 구문 분석하지 않기 때문에, 나는 다음과 같이 정의 매퍼를 썼다 그리고 의존성 내가 그것을 통과해야 Java 8 LocalDate Jackson format

에서의 pom.xml에

public class LocalDateObjectMapperContextResolver implements ContextResolver<ObjectMapper>{ 
private final ObjectMapper MAPPER; 

public LocalDateObjectMapperContextResolver() { 
    MAPPER = new ObjectMapper(); 
    MAPPER.registerModule(new JavaTimeModule()); 
    //MAPPER.findAndRegisterModules(); 
    MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 
} 

@Override 
public ObjectMapper getContext(Class<?> type) { 
    return MAPPER; 
} 

}

이 제안되었다 추가 spring.xml의 메시지 변환기로. 하나의 기본 매퍼가 이미 존재하기 때문에

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" 
       p:objectMapper-ref="objectMapper"/> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

, 나는 그것을 내 매퍼를 추가 할 수 없습니다. 그래서 변화 이하로 만들었지 만, 아직도 내가 매퍼가 필요 해결을 전달하고 있기 때문에 이것은 분명히 정확하지

<mvc:annotation-driven > 
    <mvc:message-converters register-defaults="false"> 
     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" > 
      <!-- p:objectMapper-ref="objectMapper"/> --> 
      <property name="objectMapper" ref="localDateMapper" /> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

작동하지 않습니다. 커스텀 클래스의 getContext() 메소드를 호출하고 그것을 Message Converter에서 어떻게 설정합니까? 이제 응용 프로그램 시작 whilel 예외가 발생했습니다. 이름이 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter # 0'인 빈을 만드는 동안 오류가 발생했습니다 : 내부 bean 'org.springframework.http.converter.json을 만들 수 없습니다. bean 속성 'messageConverters'를 key [0]으로 설정하는 동안 [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter] 유형의 MappingJacksonHttpMessageConverter # 0 '; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 'org.springframework.http.converter.json.MappingJacksonHttpMessageConverter # 0'ServletContext 리소스 [/WEB-INF/spring.xml]에 정의 된 이름으로 빈을 생성하는 중 오류가 발생했습니다 : 콩 실패; 중첩 예외는 org.springframework.beans.ConversionNotSupportedException : '**** package ***. LocalDateObjectMapperContextResolver'유형의 속성 값을 속성 'objectMapper'의 필수 유형 'org.codehaus.jackson.map.ObjectMapper'로 변환하지 못했습니다. 중첩 예외는 java.lang.IllegalStateException입니다 : [**** package ***. LocalDateObjectMapperContextResolver] 유형의 값을 'objectMapper'속성의 필수 유형 [org.codehaus.jackson.map.ObjectMapper]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾았습니다

답변

0

매퍼가 아닌 사용자 정의 모듈 만 있으면됩니다. 그런 다음 그에 따라 스프링을 구성 rpely에 대한

<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean" 
     p:simpleDateFormat="yyyy-MM-dd" 
     p:modulesToInstall="your.module.JavaTimeModule"/> 

<bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/> 

<mvc:annotation-driven> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="objectMapper" ref="objectMapper"/> 
     </bean> 
     <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"> 
      <property name="objectMapper" ref="xmlMapper"/> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 
+0

감사합니다, 나는 아직도 1 페이지하지 않았다 : modulesToInstall = "your.module.JavaTimeModule을"/> "이것은 jsr310 모듈 또는 사용자 정의 모듈은 2. 무엇을해야 들어가기 모듈 3. p : createXmlMapper = "true"/>, 응답은 JSON으로, JSON 용으로 응답하는 방법 이 질문은 숙련 된 개발자에게는 어리석은 표정이 될 수 있습니다. – Surinder

+0

springson의 최신 버전에서 jackson-datatype-jsr310을 참조하면 pom에 종속성을 추가하기 만하면 모듈이 자동으로 감지됩니다. 수동으로 모듈을 추가하려면'

'(여기서 p는 [p-namespace] (http://docs.spring.io/spring/) docs/current/spring-framework-reference/html/beans.html # beans-p-namespace). 응답은 클라이언트가 수락 할 경우 클라이언트가 보내는 수락 헤더의 값에 따라 달라집니다. 클라이언트가 수락하면 "text/json"이 응답하고 JSON에 응답합니다. – angcap

+0

내가 위의 시도,하지만 난 org.springframework.beans.factory.BeanCreationException 예외 아래에있어 Jackson2ObjectMapperFactoryBean 에서 modulesToInstalled라는 프로퍼티가 없다 : 이름을 가진 bean을 생성 오류 'objectMapper'의 ServletContext 자원에 정의 ...... .. 빈 클래스 [org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean]의 'modulesToInstall'속성이 올바르지 않습니다. Bean 속성 'modulesToInstall'에 쓰기가 가능하지 않거나 잘못된 설정 메소드가 있습니다. setter의 매개 변수 유형이 getter의 반환 유형과 일치합니까? – Surinder

관련 문제