Spring MVC - @PathVariable Punkt (.) Wird abgeschnitten

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:

  1. Für die Eingabe/site/google zeigt "q"google an

  2. Für die Eingabe/site/google.com zeigt "q" immer nochgoogle an, der Punkt (.) Wird abgeschnitten!?

  3. Bei Eingabe/site/google.com.my zeigt „q“google.com an, der letzte Punkt (.) Wird abgeschnitten!

  4. Für die Eingabe/site/google.com.my.abc zeigt "q"google.com.my an

  5. 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