Diferencia entre revisiones de «Formateo De Fecha Con Jackson 1.7 y Spring MVC 3.1»

De Dos Ideas.
Saltar a: navegación, buscar
(Página creada con '==Formato customizado de fecha== En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la sig…')
 
(Formato customizado de fecha)
Línea 8: Línea 8:
 
<bean id="jacksonSerializationConfig" factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig"/>
 
<bean id="jacksonSerializationConfig" factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig"/>
  
<!--Creamos un bean de la clase "MethodInvokingFactoryBean" provista por Spring para manipular la inicialización de nuestro bean "jacksonSerializationConfig", para forzar que al inicializarse se ejecute el método "setDateFormat" recibiendo por parametro un objeto del tipo SimpleDateFormat con el el formato que deseemos para la fecha-->
+
<!--Creamos un bean de la clase "MethodInvokingFactoryBean" provista por Spring para manipular la inicialización de nuestro bean "jacksonSerializationConfig", para forzar que al inicializarse se ejecute el método "setDateFormat" recibiendo por parametro un objeto del tipo SimpleDateFormat con el formato que deseemos para la fecha-->
 
<bean id="jacksonSerializationConfigMethodInvokingFactoryBean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
 
<bean id="jacksonSerializationConfigMethodInvokingFactoryBean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
 
<property name="targetObject" ref="jacksonSerializationConfig" />
 
<property name="targetObject" ref="jacksonSerializationConfig" />

Revisión del 20:49 28 may 2013

Formato customizado de fecha

En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la siguiente configuración. <bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>

<bean id="jacksonSerializationConfig" factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig"/>

<bean id="jacksonSerializationConfigMethodInvokingFactoryBean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="jacksonSerializationConfig" /> <property name="targetMethod" value="setDateFormat" /> <property name="arguments"> <list> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="dd/MM/yyyy"></constructor-arg> </bean> </list> </property> </bean>

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

Formato ISO-8601

Para utilizar este formato que Jackson trae como default, se requiere una configuración un poco más rebuscada. <bean name="jacksonObjectMapper" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject"> <bean class="org.codehaus.jackson.map.ObjectMapper" /> </property> <property name="targetMethod" value="configure" /> <property name="arguments"> <list> <util:constant static-field="org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS"/> <util:constant static-field="java.lang.Boolean.FALSE"/> </list> </property> </bean>

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

Como testear nuestra configuración con MockMvc

En caso de que estemos utilizando MockMvcBuilders para testear y estemos utilizando standaloneSetup ya que no podemos/queremos cargar todo el contexto por algún motivo, podemos testear de la siguiente manera. private MockMvc mockMvc;

@Autowired private RequestMappingHandlerAdapter requestMappingHandlerAdapter;

@Before public void setUp() { List<HttpMessageConverter<?>> messageConverters = requestMappingHandlerAdapter.getMessageConverters(); HttpMessageConverter<?>[] messageConvertersArray = messageConverters.toArray(new HttpMessageConverter<?>[messageConverters.size()]);

MockMvc mockMvc = MockMvcBuilders.standaloneSetup(instancia).setMessageConverters(messageConvertersArray).build();

}