Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会有这种错误行为,将电子邮件地址作为Spring MVC path变量的值传递?_Spring_Spring Mvc_Path Variables - Fatal编程技术网

为什么我会有这种错误行为,将电子邮件地址作为Spring MVC path变量的值传递?

为什么我会有这种错误行为,将电子邮件地址作为Spring MVC path变量的值传递?,spring,spring-mvc,path-variables,Spring,Spring Mvc,Path Variables,我发现在Spring MVC中使用路径变量的这种特殊情况有一些困难 因此,我打开一个URL,如下所示: localhost:8080/my-project/utenze/my.username/confermaEmail/my.email@google.com @RequestMapping(value = "utenze/{username}/confermaEmail/{email}", method = RequestMethod.GET) public String confe

我发现在Spring MVC中使用路径变量的这种特殊情况有一些困难

因此,我打开一个URL,如下所示:

localhost:8080/my-project/utenze/my.username/confermaEmail/my.email@google.com
@RequestMapping(value = "utenze/{username}/confermaEmail/{email}", method = RequestMethod.GET)
    public String confermaModificaEmail(@RequestHeader(value = HEADER_USER_CG) String codicefiscale, 
                                        @PathVariable String username, @PathVariable String email, Model model)  {

        logger.info("INTO confermaModificaEmail(), indirizzo e-mail: " + email);

        ...................................................................
        ...................................................................
        ...................................................................

        return "myView";
}
在我的控制器类中,我有一个控制器方法,该方法处理URL如下:

localhost:8080/my-project/utenze/my.username/confermaEmail/my.email@google.com
@RequestMapping(value = "utenze/{username}/confermaEmail/{email}", method = RequestMethod.GET)
    public String confermaModificaEmail(@RequestHeader(value = HEADER_USER_CG) String codicefiscale, 
                                        @PathVariable String username, @PathVariable String email, Model model)  {

        logger.info("INTO confermaModificaEmail(), indirizzo e-mail: " + email);

        ...................................................................
        ...................................................................
        ...................................................................

        return "myView";
}
前一个请求已正确处理,但电子邮件路径变量值存在以下问题

问题是email路径变量值不是my。emai@google.com如我所料,但这是我的梦想。emai@google

Spring将自动删除插入值的最后一个.com部分


为什么??有什么问题?我错过了什么?如何解决此问题?

在您的情况下,我将从path变量中删除
{email}
,并通过请求参数请求它:

@RequestMapping(value = "utenze/{username}/confermaEmail", method = RequestMethod.GET)
public String confermaModificaEmail(@RequestHeader(value = HEADER_USER_CG) String codicefiscale, 
                                    @PathVariable String username, @RequestParam(value="email", required=true) String email, Model model)  {

    logger.info("INTO confermaModificaEmail(), indirizzo e-mail: " + email);

    ...................................................................
    ...................................................................
    ...................................................................

    return "myView";}

尝试一下这个=)

解决这个问题的一个快速方法是:创建一个方法(例如emailFixer)并检查电子邮件(方法参数)如果电子邮件最后有.com,如果没有,则添加并返回它。请看,这对我来说不是一个解决方案,因为我必须使用此URL,而不使用电子邮件值的参数。对于
username
,它也将失败,因为用户名也包含点。建议使用此方法,而不是将其作为路径变量发送。