为啥我有这种错误的行为,将电子邮件地址作为 Spring MVC 路径变量的值传递? [复制]
Posted
技术标签:
【中文标题】为啥我有这种错误的行为,将电子邮件地址作为 Spring MVC 路径变量的值传递? [复制]【英文标题】:Why I have this wrong behavior passing an e-mail address as value of a Spring MVC path variable? [duplicate]为什么我有这种错误的行为,将电子邮件地址作为 Spring MVC 路径变量的值传递? [复制] 【发布时间】:2016-08-24 16:16:39 【问题描述】:我发现在 Spring MVC 中使用这种 path variable 的特殊情况有些困难。
所以我打开一个这样的 URL:
localhost:8080/my-project/utenze/my.username/confermaEmail/my.email@google.com
在我的控制器类中,我有这个处理 URL 的控制器方法:
@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 路径变量值存在以下问题。
问题是 email 路径变量值不是我期望的 my.emai@google.com 而是 my.emai@google。
Spring 会自动删除插入值的最后一个 .com 部分。
为什么?问题是什么?我错过了什么?我该如何解决这个问题?
【问题讨论】:
解决此问题的快速方法是:创建一个方法(例如 emailFixer)并检查电子邮件(方法参数)与电子邮件最后是否存在 .com,如果不存在则添加它并返回它。 见***.com/a/34164388/2696260 【参考方案1】:在你的情况下,我会从路径变量中删除 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";
试试这个=)
【讨论】:
这对我来说不是一个解决方案,因为我必须使用这个不使用参数作为电子邮件值的 URLusername
也会失败,因为用户名也包含点。
建议使用此方法,而不是将其作为路径变量发送。以上是关于为啥我有这种错误的行为,将电子邮件地址作为 Spring MVC 路径变量的值传递? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥在通过 as.character() 将列表强制为字符时会出现这种行为?