Dengan Spring 3.0, dapatkah saya memiliki variabel jalur opsional?
Sebagai contoh
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Di sini saya ingin /json/abc
atau /json
memanggil metode yang sama.
Satu solusi nyata menyatakan type
sebagai parameter permintaan:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
dan kemudian /json?type=abc&track=aa
atau /json?track=rr
akan bekerja
@RequestMapping
dua nilai seperti di: stackoverflow.com/questions/17821731/…@PathVariable
ke@RequestParam
Jika Anda menggunakan Spring 4.1 dan Java 8 Anda dapat menggunakan
java.util.Optional
yang didukung dalam@RequestParam
,@PathVariable
,@RequestHeader
dan@MatrixVariable
di Spring MVC -sumber
"/json/{type}"
dan ketik tidak ada, itu tidak akan terkena (seperti yang disarankan jawaban saya) tetapi di sini Anda milikivalue = {"/json/{type}", "/json" }
. Jadi jika ada yang cocok dengan metode controller akan dipukul.@PathVariable(required = false)
dan mendapatkan nol jika variabel tidak ada.Tidak diketahui bahwa Anda juga dapat menyuntikkan Peta variabel jalur menggunakan anotasi @PathVariable. Saya tidak yakin apakah fitur ini tersedia di Spring 3.0 atau jika ditambahkan nanti, tapi di sini ada cara lain untuk menyelesaikan contoh:
sumber
Anda bisa menggunakan:
untuk params opsional daripada pathVariable
sumber
Contoh Spring 5 / Spring Boot 2:
pemblokiran
reaktif
sumber
Contoh sederhana dari komentar Nicolai Ehmann dan jawaban wildloop (berfungsi dengan Spring 4.3.3+), pada dasarnya Anda dapat menggunakan
required = false
sekarang:sumber
Periksa Spring 3 WebMVC ini - Variabel Path Opsional . Ini menunjukkan artikel membuat ekstensi ke AntPathMatcher untuk mengaktifkan variabel jalur opsional dan mungkin bisa membantu. Semua kredit untuk Sebastian Herold karena memposting artikel.
sumber
Inilah jawaban langsung dari halaman referensi baeldung: - https://www.baeldung.com/spring-optional-path-variables
sumber
sumber