Mengatasi Pembolehubah Laluan Terpenggal dalam Spring MVC dengan @PathVariable
Masalah:
Semasa menggunakan Spring MVC dengan @PathVariable untuk pembangunan API RESTful, telah diperhatikan bahawa pembolehubah laluan yang mengandungi aksara khas semakin dipotong. Khususnya, apabila pembolehubah laluan seperti "blah2010.08.19-02:25:47" disediakan, hanya bahagian sehingga tempoh pertama (iaitu, "blah2010.08") sedang ditangkap oleh @PathVariable.
Punca:
Secara lalai, Spring MVC menganggap argumen @PathVariable sebagai rentetan mudah dan mengharapkannya mengikut peraturan pemformatan parameter URL tertentu. Peraturan ini termasuk sekatan ke atas aksara yang dibenarkan dalam pembolehubah laluan, dengan aksara khas seperti noktah dan sempang ditafsirkan sebagai pembatas nilai. Akibatnya, Spring memotong pembolehubah laluan pada tika pertama aksara yang tidak sah.
Penyelesaian:
Untuk mengelakkan Spring daripada memotong nilai @PathVariable, adalah perlu untuk secara eksplisit nyatakan bahawa hujah harus menerima julat aksara yang lebih luas. Ini boleh dicapai dengan menggunakan ungkapan biasa dalam anotasi @RequestMapping.
Sebagai contoh, untuk membenarkan pembolehubah laluan mengandungi noktah, sempang dan aksara khas lain, ungkapan biasa berikut boleh digunakan:
@RequestMapping(method = RequestMethod.GET, value = Routes.BLAH_GET + "/{blahName:.+}")
Akhir ". " dalam ungkapan biasa menunjukkan bahawa pembolehubah laluan {blahName} harus sepadan dengan mana-mana rentetan yang tidak kosong, dengan berkesan menangkap semua aksara dalam laluan yang disediakan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pembolehubah Laluan Terpenggal dengan Aksara Khas dalam Spring MVC @PathVariable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!