Mam żądanie GET, które wysyła datę w formacie RRRR-MM-DD do kontrolera Spring. Kod kontrolera jest następujący:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
Żądanie jest wysyłane poprawnie, ponieważ sprawdzam z Firebug. Wyskakuje mi błąd:
Status HTTP 400: Żądanie wysłane przez klienta było niepoprawne pod względem składniowym.
Jak mogę sprawić, by administrator zaakceptował ten format daty? Proszę pomóż. Co ja robię źle?
java
spring
date
spring-mvc
LittleLebowski
źródło
źródło
@DateTimeFormat
każdy kontroler, jaki masz ...spring.mvc.date-format
atrybutapplication.properties
lub dodać komponenty bean, które implementująorg.springframework.format
interfejs (rozszerzenieorg.springframework.format.datetime.DateFormatter
jest prawdopodobnie właściwą drogą). W non-Boot wiosną można sposób i dodać tam fasolę Formatter-wykonawczych.@Override
addFormatters
WebMvcConfigurerAdapter
Oto, co zrobiłem, aby uzyskać sformatowaną datę z interfejsu
Możesz go użyć, aby uzyskać to, czego chcesz.
źródło
... lub możesz to zrobić we właściwy sposób i mieć spójną regułę serializacji / deserializacji dat w całej aplikacji. umieść to w application.properties:
źródło
Poniższe rozwiązanie doskonale sprawdza się przy zastosowaniu do butów sprężynowych.
Kontroler:
Zatem w programie wywołującym (w moim przypadku jest to strumień sieciowy) musimy przekazywać datę i godzinę w formacie ( „rrrr-MM-dd HH: mm: ss” ).
Strona dzwoniącego:
Magazyn:
Twoje zdrowie!!
źródło
Jeśli chcesz użyć zmiennej PathVariable, możesz użyć przykładowej metody poniżej (wszystkie metody są i robią to samo):
źródło