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/googlezeigt "q"googlean -
Für die Eingabe
/site/google.comzeigt "q" immer nochgooglean, der Punkt (.) Wird abgeschnitten!? -
Bei Eingabe
/site/google.com.myzeigt „q“google.coman, der letzte Punkt (.) Wird abgeschnitten! -
Für die Eingabe
/site/google.com.my.abczeigt "q"google.com.myan -
Für die Eingabe
/site/cloud.google.comzeigt "q"cloud.googlean
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