Ich habe eine GET-Anfrage, die ein Datum im Format JJJJ-MM-TT an einen Spring Controller sendet. Der Controller-Code lautet wie folgt:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
Die Anfrage wird korrekt gesendet, da ich mich bei Firebug erkundige. Ich bekomme den Fehler:
HTTP-Status 400: Die vom Client gesendete Anforderung war syntaktisch falsch.
Wie kann ich den Controller dazu bringen, dieses Datumsformat zu akzeptieren? Bitte helfen Sie. Was mache ich falsch?
java
spring
date
spring-mvc
LittleLebowski
quelle
quelle
@DateTimeFormat
jeden Controllerspring.mvc.date-format
Attribut in festlegenapplication.properties
oder Beans hinzufügen, die dieorg.springframework.format
Schnittstelle implementieren (Erweiterungorg.springframework.format.datetime.DateFormatter
ist wahrscheinlich der richtige Weg). In Nicht-Boot Spring können Sie@Override
dieaddFormatters
MethodeWebMvcConfigurerAdapter
und Hinzufügen Ihrer Formatter-implementierenden Beans dort.Dies ist, was ich getan habe, um ein formatiertes Datum vom Frontend zu erhalten
Sie können es verwenden, um zu bekommen, was Sie wollen.
quelle
... oder Sie können es richtig machen und eine kohärente Regel für die Serialisierung / Deserialisierung von Daten in Ihrer gesamten Anwendung festlegen. Fügen Sie dies in application.properties ein:
quelle
Die folgende Lösung funktioniert perfekt für die Federstiefelanwendung.
Regler:
Im Aufrufer (in meinem Fall handelt es sich um einen Web-Flux) müssen wir also die Datums- und Uhrzeitangabe in diesem Format ( "JJJJ-MM-TT HH: MM: SS" ) übergeben.
Anruferseite:
Repository:
Prost!!
quelle
Wenn Sie eine PathVariable verwenden möchten, können Sie unten eine Beispielmethode verwenden (alle Methoden sind und tun dasselbe):
quelle