为什么我会有这种错误行为,将电子邮件地址作为Spring MVC path变量的值传递?
我发现在Spring MVC中使用路径变量的这种特殊情况有一些困难 因此,我打开一个URL,如下所示:为什么我会有这种错误行为,将电子邮件地址作为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
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
,它也将失败,因为用户名也包含点。建议使用此方法,而不是将其作为路径变量发送。