Рубрики
Без рубрики

Spring MVC – @Переменная точка пути (.) получить усеченный

– Spring MVC – @Переменная пути точка (.) получить усеченный

Просмотрите весенний MVC @Сопоставление запросов и @Изменяемый путь пример.

@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");

    }
//...

Смотрите следующие случаи:

  1. Для ввода /сайт/google , “q” отобразится google
  2. Для ввода /сайт/google.com , “q” все равно будет отображаться google , точка (.) усечена!?
  3. Для ввода /сайт/google.com.my отобразится “q” google.com , последняя точка (.) усечена!
  4. Для ввода /сайт/google.com.my.abc , отобразится “q” google.com.my
  5. Для ввода /сайт/cloud.google.com , “q” отобразит cloud.google

Последняя точка (.) всегда усекается.

Решение

Чтобы исправить это, добавьте сопоставление регулярных выражений {q:.+} в @Сопоставление запросов

@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");

    }
//...

Теперь для ввода /сайт/google.com , “q” отобразит правильное google

Рекомендации

  1. Шаблоны шаблонов Spring Doc –URI с регулярными выражениями

Оригинал: “https://mkyong.com/spring-mvc/spring-mvc-pathvariable-dot-get-truncated/”