我正在继续学习Play 2.0,我正在使用登录表单.基本上与Zentasks提供的示例项目类似的形式......
我的问题是在数据库中找不到用户时的错误消息,错误发生在以下行:
Form<Login> loginForm = form(Login.class).bindFromRequest();
Run Code Online (Sandbox Code Playgroud)
我的模型看起来像:
@Entity
public class Person extends Model {
@Constraints.Required
public String password;
@Constraints.Required
public String email;
// -- Queries
public static Model.Finder<String, Person> find = new Model.Finder(String.class, Person.class);
/**
* Authenticate a User.
*/
public static Person authenticate(String email, String password) {
Logger.info("email: " + email + " and password is:" + password);
return find.where().eq("email", email).eq("password", password).findUnique();
}
/**
* Retrieve all users.
*/
public static List<Person> findAll() {
return find.all();
}
// --
}
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像:
/**
* Handle login form submission.
*/
public static Result authenticate() {
play.Logger.info("Entering authenticated method...");
Form<Login> loginForm = form(Login.class).bindFromRequest(); //ERROR OCCURS HERE
if (loginForm.hasErrors()) {
return badRequest(views.html.login.render(loginForm));
} else {
session("email", loginForm.get().email);
return redirect(routes.LandingPage.index());
}
}
Run Code Online (Sandbox Code Playgroud)
我在Application.java中的Login类:
public static class Login {
public String email;
public String password;
public String validate() {
Logger.info("Entering validation in class login... " + email + " " + password);
if (Person.authenticate(email, password) == null) {
return "Invalid user or password";
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我使用mySql作为我的数据库.我有一个有效的用户,代码工作得很好......
更新17-04-2012
如果您在Play2.0中遇到过奇怪的事情,请仔细调试.我来自PHP,我尝试使用sysouts进行调试!但那不行.运行play debug run并点击F6直到你知道它出错了!
在我的情况下,我正在记录数据库中尚未保存的内容,实际上它还不存在!
这是一个拼写错误(静态部分)吗?
public static class Login {
}
Run Code Online (Sandbox Code Playgroud)
如果不是的话,可能就是这个原因。AFAIK Form 类必须是 POJO。
| 归档时间: |
|
| 查看次数: |
4180 次 |
| 最近记录: |