我正以这种方式传递值为“adrian@domain.com”的电子邮件参数:
.../confirmation?email="adrian@domain.com"
该请求通过以下Controlerr方法处理,该方法将参数赋给ModelAtrribute添加到confirm.jsp视图中:
@RequestMapping(value="/confirmation")
public String accessConfirmationForm(@RequestParam(value = "email") String email, Model model)
{
ConfirmationCode confCode = new ConfirmationCode();
confCode.setEmail(email);
model.addAttribute("confCode", confCode);
return "confirm";
}
这是来自confirm.jsp的代码:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ page session="false" %>
<html>
<head>
<title>Confirmation</title>
</head>
<body>
<form:form modelAttribute="confCode" action="${pageContext.request.contextPath}/confirm" method="get">
<table>
<tr>
<td>Confirmation code for email ${confCode.email}:</td>
<td><form:input path="confirmationCode" /></td>
<td><font color="red"><form:errors path="confirmationCode"></form:errors></font></td>
<td><form:hidden path="email" value= "${confCode.email}" /></td>
</tr>
<tr>
<td><input type="submit" value="Confirm"></td>
</tr>
</table>
</form:form>
提交表单请求后,将重定向到以下控制器的方法:
@RequestMapping(value = "/confirm", method = RequestMethod.GET)
public String confirmUser(
// @RequestParam(value = "email", required=false) String email,
@Valid @ModelAttribute(value = "confCode") ConfirmationCode confCode, BindingResult result,
Model model) {...}
问题是此阶段confCode属性的电子邮件变量不等于manualy类型字符串“adrian@domain.com”,但是当在控制台上打印电子邮件变量时,我可以看到相同的字符串“adrian@domain.com”没有任何尾随空格。
当我试图通过电子邮件获取DAO实现类中的实体时,它会导致电子邮件变量不适用:
//it causes null reference
Emails mail = entityManager.find(Emails.class, email);
//it returns proper Entity
Emails mail = entityManager.find(Emails.class, "adrian@domain.com");
我认为这两个字符串不相等的原因可能是编码,也许?我的数据库中的编码是latin-1(iso 8859-1)?
如何解决这个问题?
为什么两个字符串彼此不相等?
答案 0 :(得分:1)
... /确认电子邮件=&#34; adrian@domain.com"
我认为参数值不应该有双引号