Проблема
Смотрите следующий пример весеннего ОТДЫХА, если запрос, такой как ” http://localhost:8080/site/google.com
“отправлено, весна возвращается” google “. Похоже, что Spring рассматривает “.” как расширение файла и извлекает половину значения параметра.
package com.mkyong.web.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/site") public class SiteController { @RequestMapping(value = "/{domain}", method = RequestMethod.GET) public String printWelcome(@PathVariable("domain") String domain, ModelMap model) { model.addAttribute("domain", domain); return "domain"; } }
Решение
Чтобы исправить это, сделайте @RequestMapping
поддерживает регулярное выражение, добавьте ” .+
“, это значит соответствовать чему угодно. Теперь весна вернется” google.com “.
package com.mkyong.web.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/site") public class SiteController { @RequestMapping(value = "/{domain:.+}", method = RequestMethod.GET) public String printWelcome(@PathVariable("domain") String domain, ModelMap model) { model.addAttribute("domain", domain); return "domain"; } }
Рекомендации
- Шаблоны шаблонов Spring MVC –URI с регулярными выражениями
- Регулярное выражение Википедия
- Пружина jira –SPR-6164
Оригинал: “https://mkyong.com/spring-mvc/spring-rest-requestmapping-extract-incorrectly-if-value-contains/”