java bindFromRequest验证为空
我是Java Play框架的新手,我正在尝试让身份验证工作起来。所以我遵循这个教程:https://www.playframework.com/documentation/2.1.0/JavaGuide4
这是我的代码:
public static Result authenticate()
{
Form<Login> loginForm = form(Login.class).bindFromRequest();
return ok(loginForm.toString());
}
public static class Login
{
public String email;
public String password;
public String validate()
{
return "VALIDATE "+email+password;
}
}
在authoticate()方法中,我可以看到表单提交的值,但Login类中的validate()方法看不到它们(变量始终为null)。。loginForm的输出。toString()包含:
Form(of=class controllers.Application$Login, data={email=asdf@asdf, password=asdf}, value=None, errors={=[ValidationError(,[VALIDATE nullnull],[])]})
如你所见,数据已被接收。。但在validate方法中,数据突然等于null。那么我该如何解决这个问题呢
# 1 楼答案
你没有提到你是如何调用
validate()
但是我认为这可能会起到作用,按照以下思路做一些事情:这对我有用
# 2 楼答案
如果您认为验证已经通过,那么模型中的方法validate应该返回null,否则应该返回错误消息文本。然后,您需要通过“hasGlobalError”方法检查表单是否包含错误。当validate()方法返回字符串而不是null时,将填充globalError。但在您的情况下,应该使用一些模型字段注释-https://www.playframework.com/documentation/2.3.x/api/java/play/data/validation/Constraints.html
如果您想检查表单在这些方面是否失败,那么您可以使用“hasErrors”方法
该模型将检查提供的电子邮件是否真的是电子邮件,以及密码是否长于或等于6个字符
注意:不要在模板上使用toString,应该使用render()