2015-10-13 55 views
1

這有點令人沮喪......我之前在以前的項目中工作過,但在調試幾個小時之後無法在我的新項目中工作。獲取Spring MVC與JodaModule一起工作

假設我有一個簡單的REST控制器返回喬達的LocalDate: -

@RestController 
@RequestMapping(value = "/api") 
public final class ApiController { 
    @RequestMapping(method = RequestMethod.GET) 
    public ResponseEntity<LocalDate> main() { 
     return new ResponseEntity<LocalDate>(LocalDate.now(), HttpStatus.OK); 
    } 
} 

默認情況下,當我打電話http://app/api,我得到[2015,10,13]。我真正想要的是2015-10-13

要在我以前的項目解決這個問題,我得到了它在spring-servlet.xml這種配置工作: -

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <context:component-scan base-package="test.controller"/> 

    <mvc:annotation-driven/> 

    <mvc:resources location="/resources/" mapping="/resources/**"/> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

    <bean id="objectMapper" 
      class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean" 
      p:indentOutput="true" 
      p:simpleDateFormat="yyyy-MM-dd'T'HH:mm:ss.SSSZ"> 
    </bean> 

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" 
      p:targetObject-ref="objectMapper" 
      p:targetMethod="registerModule"> 
     <property name="arguments"> 
      <list> 
       <bean class="com.fasterxml.jackson.datatype.joda.JodaModule"/> 
      </list> 
     </property> 
    </bean> 

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

但是,當我做同樣的事情在我的新項目,我又得到[2015,10,13]代替的2015-10-13

我沒有升級一些依賴關係,我也確保沒有額外的ObjectMapper被加載。

這裏是我當前的依賴關係樹...我刪除了所有我不需要的東西: -

enter image description here

如何配置Spring MVC以JSON返回正確的日期格式?

非常感謝。

回答

1

您聲明瞭<mvc:annotation-driven>兩次。嘗試刪除第一個聲明(空白,默認配置)。可能在第二個<mvc:annotation-driven>中配置的消息轉換器正在被第一個聲明(使用默認消息轉換器)覆蓋。

+0

我的天啊....你是絕對正確的,不知何故,我甚至沒有注意到這一點。謝謝。 – limc

相關問題