在用spring mvc 的时候,遇到一个很奇怪的问题,我需要将一个域名作为参数,传到后台,采用了类似restful 的方式,比如要将 yihaomen.com 传到后台,但后台得到的结果是yihaomen, 点号后面的内容被截断了。也许是 spring mvc 的bug, 但也有处理办法的。
程序代码
@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");
}
//...
使用正则表达式,就可以实现了。