Spring MVC - @PathVariable Punkt (.) Wird abgeschnitten
Überprüfen Sie ein Beispiel für Spring MVC@RequestMapping
und@PathVariable
.
@RequestMapping("/site") public class SiteController { @RequestMapping(value = "/{q}", method = RequestMethod.GET) public ModelAndView display(@PathVariable("q") String q) { logger.debug("Site : q : {}", q); return getModelAndView(q, "site"); } //...
Siehe folgende Fälle:
-
Für die Eingabe
/site/google
zeigt "q"google
an -
Für die Eingabe
/site/google.com
zeigt "q" immer nochgoogle
an, der Punkt (.) Wird abgeschnitten!? -
Bei Eingabe
/site/google.com.my
zeigt „q“google.com
an, der letzte Punkt (.) Wird abgeschnitten! -
Für die Eingabe
/site/google.com.my.abc
zeigt "q"google.com.my
an -
Für die Eingabe
/site/cloud.google.com
zeigt "q"cloud.google
an
Der letzte Punkt (.) Wird immer abgeschnitten.
Note
Getestet mit Feder 3 und Feder 4.
Lösung
Um dies zu beheben, fügen Sie eine Regex-Zuordnung{q:.+}
in@RequestMapping
hinzu
@RequestMapping("/site") public class SiteController { @RequestMapping(value = "/{q:.+}", method = RequestMethod.GET) public ModelAndView display(@PathVariable("q") String q) { logger.debug("Site : q : {}", q); return getModelAndView(q, "site"); } //...
Für die Eingabe/site/google.com
zeigt „q“ nun die korrektengoogle
an