J'ai une requête GET qui envoie une date au format AAAA-MM-JJ à un contrôleur Spring. Le code du contrôleur est le suivant:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
La demande est envoyée correctement lorsque je vérifie avec Firebug. J'obtiens l'erreur:
État HTTP 400: la requête envoyée par le client était syntaxiquement incorrecte.
Comment puis-je faire en sorte que le contrôleur accepte ce format de date? Veuillez aider. Qu'est-ce que je fais mal?
java
spring
date
spring-mvc
LittleLebowski
la source
la source
@DateTimeFormat
dans chaque contrôleur que vous avez ...spring.mvc.date-format
attributapplication.properties
ou ajouter des beans qui implémentent l'org.springframework.format
interface (l'extensionorg.springframework.format.datetime.DateFormatter
est probablement la voie à suivre). Dans non-Boot Spring, vous pouvez utiliser@Override
laaddFormatters
méthodeWebMvcConfigurerAdapter
et y ajouter vos beans d'implémentation du formateur.C'est ce que j'ai fait pour obtenir la date formatée à partir du frontal
Vous pouvez l'utiliser pour obtenir ce que vous voulez.
la source
... ou vous pouvez le faire de la bonne manière et avoir une règle cohérente pour la sérialisation / désérialisation des dates dans toute votre application. mettez ceci dans application.properties:
la source
La solution ci-dessous fonctionne parfaitement pour l'application de démarrage à ressort.
Manette:
Donc, dans l'appelant (dans mon cas, c'est un flux Web), nous devons passer la date et l'heure dans ce format ( "aaaa-MM-jj HH: mm: ss" ).
Côté appelant:
Dépôt:
À votre santé!!
la source
Si vous souhaitez utiliser un PathVariable, vous pouvez utiliser un exemple de méthode ci-dessous (toutes les méthodes sont et font la même chose):
la source