2012-10-27 68 views
3

我有关于杰克逊2.1的问题。如何将jackson objectmapper dateformat配置添加到spring mvc配置中?

我pojo有一些日期属性,我想把它转换为字符串,我将它设置在spring-servlet.xml中,但它不是有用的。我不喜欢在二传手上使用@JsonSerialize(using = JsonDateSerializer.class)

这是我的配置:

<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
    <property name="objectMapper"> 
     <bean class="com.fasterxml.jackson.databind.ObjectMapper"> 
      <property name="dateFormat"> 
       <bean class="java.text.SimpleDateFormat"> 
        <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> 
       </bean> 
      </property> 
     </bean> 
    </property> 
</bean> 

回答

4

假设你使用Spring 3.1,您应该自定义您的mvc-annotation driven标记属性, 在 Configuring ObjectMapper in Spring

显示假设你的bean声明是正确的我认为它应该像

<mvc:annotation-driven> 
     <mvc:message-converters register-defaults="true"> 
      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
       <property name="objectMapper"> 
       <bean class="com.fasterxml.jackson.databind.ObjectMapper"> 
        <property name="dateFormat"> 
        <bean class="java.text.SimpleDateFormat"> 
        <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> 
        </bean> 
        </property> 
       </bean> 
       </property> 
     </bean> 
    </mvc:message-converters> 

    </mvc:annotation-driven> 
1

我的设置是:

<!-- Date Format --> 
<bean id="dateFormatter" class="java.text.SimpleDateFormat"> 
    <constructor-arg value="yyyy-MM-dd"/> 
</bean> 

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="dateFormatter" /> 
    <property name="targetMethod" value="setTimeZone" /> 
    <property name="arguments"> 
     <list> 
      <ref bean="timeZone"/> 
     </list> 
    </property> 
</bean> 
<!-- End Date Format --> 

<!-- Jackson Object Mapper --> 
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"/> 
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="jacksonObjectMapper" /> 
    <property name="targetMethod" value="configure" /> 
    <property name="arguments"> 
     <list> 
      <value type="org.codehaus.jackson.map.DeserializationConfig.Feature">FAIL_ON_UNKNOWN_PROPERTIES</value> 
      <value>false</value> 
     </list> 
    </property> 
</bean> 

<bean id="jacksonDeserializationConfig" class="org.codehaus.jackson.map.DeserializationConfig" factory-bean="jacksonObjectMapper" factory-method="getDeserializationConfig" /> 

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="jacksonDeserializationConfig" /> 
    <property name="targetMethod" value="setDateFormat" /> 
    <property name="arguments"> 
     <list> 
      <ref bean="dateFormatter"/> 
     </list> 
    </property> 
</bean> 

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="jacksonObjectMapper" /> 
    <property name="targetMethod" value="setDeserializationConfig" /> 
    <property name="arguments"> 
     <list> 
      <ref bean="jacksonDeserializationConfig"/> 
     </list> 
    </property> 
</bean> 
<!-- End Jackson Object Mapper --> 



<!-- JSON provider --> 
<bean id="jsonRestProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"> 
    <property name="mapper" ref="jacksonObjectMapper"/> 
</bean> 
相关问题