Eu tenho uma solicitação GET que envia uma data no formato AAAA-MM-DD para um Spring Controller. O código do controlador é o seguinte:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
A solicitação é enviada corretamente enquanto eu estou verificando com o Firebug. Eu recebo o erro:
Status HTTP 400: A solicitação enviada pelo cliente estava sintaticamente incorreta.
Como posso fazer o controlador aceitar esse formato de data? Por favor ajude. O que estou fazendo de errado?
java
spring
date
spring-mvc
LittleLebowski
fonte
fonte
@DateTimeFormat
em cada controlador que você tem ...spring.mvc.date-format
atributoapplication.properties
ou adicionar beans que implementam aorg.springframework.format
interface (estenderorg.springframework.format.datetime.DateFormatter
é provavelmente o caminho a percorrer). No Boot Spring não, você pode usar@Override
oaddFormatters
métodoWebMvcConfigurerAdapter
e adicionar seus beans de implementação do Formatador.Isto é o que eu fiz para obter a data formatada do front end
Você pode usá-lo para obter o que deseja.
fonte
... ou você pode fazê-lo da maneira certa e ter uma regra coerente para serialização / desserialização de datas em todo o aplicativo. coloque isso em application.properties:
fonte
A solução abaixo funciona perfeitamente para o aplicativo de inicialização por mola.
Controlador:
Portanto, no chamador (no meu caso, é um fluxo da Web), precisamos passar a data e hora neste formato ( "aaaa-MM-dd HH: mm: ss" ).
Lado do chamador:
Repositório:
Felicidades!!
fonte
Se você deseja usar um PathVariable, pode usar um método de exemplo abaixo (todos os métodos são e fazem o mesmo):
fonte