Tengo una solicitud GET que envía una fecha en formato AAAA-MM-DD a un controlador Spring. El código del controlador es el siguiente:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
La solicitud se envía correctamente ya que estoy comprobando con Firebug. Me sale el error:
Estado HTTP 400: la solicitud enviada por el cliente era sintácticamente incorrecta.
¿Cómo puedo hacer que el controlador acepte este formato de fecha? Por favor ayuda. ¿Qué estoy haciendo mal?
java
spring
date
spring-mvc
LittleLebowski
fuente
fuente
@DateTimeFormat
en cada controlador tiene ...spring.mvc.date-format
atributoapplication.properties
o agregar beans que implementen laorg.springframework.format
interfaz (extenderorg.springframework.format.datetime.DateFormatter
es probablemente el camino a seguir). En no Boot Spring, puede usar@Override
eladdFormatters
métodoWebMvcConfigurerAdapter
y agregar sus beans de implementación del formateador allí.Esto es lo que hice para obtener la fecha formateada desde la interfaz
Puedes usarlo para conseguir lo que quieras.
fuente
... o puede hacerlo de la manera correcta y tener una regla coherente para la serialización / deserialización de fechas en toda su aplicación. poner esto en application.properties:
fuente
La siguiente solución funciona perfectamente para la aplicación de arranque de primavera.
Controlador:
Entonces, en la persona que llama (en mi caso es un flujo web), necesitamos pasar la fecha y hora en este formato ( "aaaa-MM-dd HH: mm: ss" ).
Lado de la persona que llama:
Repositorio:
¡¡Salud!!
fuente
Si desea usar una PathVariable, puede usar un método de ejemplo a continuación (todos los métodos son y hacen lo mismo):
fuente