Saya memiliki permintaan GET yang mengirimkan tanggal dalam format YYYY-MM-DD ke Spring Controller. Kode pengontrol adalah sebagai berikut:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
Permintaan dikirim dengan benar saat saya memeriksa dengan Firebug. Saya mendapatkan kesalahan:
Status HTTP 400: Permintaan yang dikirim oleh klien salah secara sintaksis.
Bagaimana saya bisa membuat pengontrol menerima format Tanggal ini? Tolong bantu. Apa yang saya lakukan salah?
java
spring
date
spring-mvc
LittleLebowski
sumber
sumber
@DateTimeFormat
setiap pengontrol yang Anda miliki ...spring.mvc.date-format
atributapplication.properties
atau menambahkan kacang yang mengimplementasikanorg.springframework.format
antarmuka (org.springframework.format.datetime.DateFormatter
mungkin memperluas cara untuk pergi). Di non-Boot Spring Anda dapat@Override
menggunakanaddFormatters
metodeWebMvcConfigurerAdapter
dan menambahkan kacang yang menerapkan Formatter di sana.Inilah yang saya lakukan untuk mendapatkan tanggal yang diformat dari ujung depan
Anda bisa menggunakannya untuk mendapatkan apa yang Anda inginkan.
sumber
... atau Anda dapat melakukannya dengan cara yang benar dan memiliki aturan yang koheren untuk serialisasi / deserialisasi tanggal di seluruh aplikasi Anda. taruh ini di application.properties:
sumber
Solusi di bawah ini berfungsi sempurna untuk aplikasi boot musim semi.
Pengontrol:
Jadi di pemanggil (dalam kasus saya ini adalah fluks web), kita harus melewatkan waktu tanggal dalam format ( "yyyy-MM-dd HH: mm: ss" ) ini.
Sisi Penelepon:
Gudang:
Bersulang!!
sumber
Jika Anda ingin menggunakan PathVariable, Anda dapat menggunakan metode contoh di bawah ini (semua metode adalah dan melakukan hal yang sama):
sumber