Spring mvc @PathVariable 得到的参数包含点号的处理办法

在用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");

    }
//...


使用正则表达式,就可以实现了。

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: spring mvc @PathVariable 得到的参数包含点号的处理办法
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.