Memahami Nuansa @RequestParam dan @PathVariable dalam Mengendalikan Watak Khas
@RequestParam dan @PathVariable ialah dua anotasi yang biasa digunakan dalam Spring Web MVC untuk mengendalikan parameter permintaan dan pembolehubah laluan URI, masing-masing. Walaupun mereka berkongsi persamaan dalam tujuan mereka, mereka mempamerkan gelagat yang berbeza apabila berurusan dengan watak istimewa.
Dalam @RequestParam, aksara khas seperti tanda tambah " " ditafsirkan sebagai ruang. Ini bermakna bahawa parameter permintaan dengan " " akan dianggap sebagai parameter tunggal dengan ruang dan bukannya literal " ". @RequestParam terutamanya bertujuan untuk mengekstrak parameter daripada rentetan pertanyaan.
Sebaliknya, @PathVariable mengendalikan aksara khas secara berbeza. Aksara " " ditafsirkan sebagai tanda tambah literal dalam pembolehubah laluan URI. Ini kerana @PathVariable direka bentuk untuk mengikat ruang letak daripada templat URI ke dalam parameter kaedah pengawal.
Contoh Penggunaan:
Pertimbangkan URI berikut:
http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
Jika kami memetakan URI ini kepada kaedah pengawal menggunakan anotasi @RequestParam dan @PathVariable, kaedahnya akan kelihatan seperti:
@RequestMapping(value = "/user/{userId}/invoices", method = RequestMethod.GET) public List<Invoice> listUsersInvoices( @PathVariable("userId") int user, @RequestParam(value = "date", required = false) Date dateOrNull) { ... }
Dalam kes ini, @RequestParam("date") akan mengikat nilai "12-05-2013" sebagai objek Tarikh, menganggap aksara "-" sebagai sebahagian daripada rentetan tarikh. Sebaliknya, @PathVariable("userId") akan mengikat "1234" sebagai int, mengekalkan nilai berangka.
Adalah penting untuk ambil perhatian bahawa parameter pilihan kini disokong untuk kedua-dua @RequestParam dan @PathVariable. Walau bagaimanapun, adalah penting untuk mempertimbangkan potensi kesan pada hierarki laluan URL dan konflik pemetaan permintaan apabila menggunakan pembolehubah laluan pilihan.
Atas ialah kandungan terperinci Bagaimanakah `@RequestParam` dan `@PathVariable` Berbeza dalam Mengendalikan Watak Khas dalam Spring MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!