Просмотрите весенний 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"); } //...
Смотрите следующие случаи:
- Для ввода
/сайт/google
, “q” отобразитсяgoogle
- Для ввода
/сайт/google.com
, “q” все равно будет отображатьсяgoogle
, точка (.) усечена!? - Для ввода
/сайт/google.com.my
отобразится “q”google.com
, последняя точка (.) усечена! - Для ввода
/сайт/google.com.my.abc
, отобразится “q”google.com.my
- Для ввода
/сайт/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
Рекомендации
Оригинал: “https://mkyong.com/spring-mvc/spring-mvc-pathvariable-dot-get-truncated/”