Spring mvc @PathVariable 得到的参数包含点号的处理办法
By:Roy.LiuLast updated:2016-01-21
在用spring mvc 的时候,遇到一个很奇怪的问题,我需要将一个域名作为参数,传到后台,采用了类似restful 的方式,比如要将 yihaomen.com 传到后台,但后台得到的结果是yihaomen, 点号后面的内容被截断了。也许是 spring mvc 的bug, 但也有处理办法的。
看看不同情况下的结果吧:
输入: /site/google, "q" 会显示为 google
输入: /site/google.com, "q" 任然为 google, 点号后面被截断了。
输入: /site/google.com.my, "q" 显示为 google.com, 最后一个点号之后的内容被截断了。
这样的情况在 spring3或者spring 4中均会出现。 有没有好的解决办法呢,就是用正则表达式了:
使用正则表达式,就可以实现了。
@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"); } //...
看看不同情况下的结果吧:
输入: /site/google, "q" 会显示为 google
输入: /site/google.com, "q" 任然为 google, 点号后面被截断了。
输入: /site/google.com.my, "q" 显示为 google.com, 最后一个点号之后的内容被截断了。
这样的情况在 spring3或者spring 4中均会出现。 有没有好的解决办法呢,就是用正则表达式了:
@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"); } //...
使用正则表达式,就可以实现了。
From:一号门
Previous:网站备案升级为公安部网站备案
COMMENTS