5
我繼續我的遊戲2.0的學習,我的工作一登錄表單上。基本上類似的形式作爲樣本項目Zentasks提供...Frombinding空對象:RuntimeException的:java.lang.reflect.InvocationTargetException
我的問題是在沒有用戶可在數據庫中找到該錯誤消息,在下一行出現錯誤:
Form<Login> loginForm = form(Login.class).bindFromRequest();
我的模型看起來像:
@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();
}
// --
}
而且我的控制器看起來像:
/**
* 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());
}
}
和我的Login類中的Application.java:
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;
}
}
順便說一句,我使用mySql作爲我的數據庫。和我有代碼工作就好了有效的用戶...
UPDATE 2012-04-17
如果你碰到奇怪的事情在Play2.0只是仔細調試。我來自PHP,我嘗試使用sysout進行調試!但那不行。運行播放調試運行並點擊F6,直到您知道它出錯的位置!
在我的情況下,我記錄的東西還沒有保存在數據庫中,實際上它還沒有存在!
如果我刪除關鍵字靜態我得到編譯錯誤:鍵入登錄不是對象controllers.Application的成員。順便說一句:靜態也如zentask示例項目中提到的那樣... – adis 2012-04-16 12:09:06
就像試驗一樣,您可以將該類從Applications類中移出到它自己的文件中,作爲公共類,然後重試?記得更新導入。 – 2012-04-17 08:00:16
嗨皮埃爾,與Login.class分開它仍然沒有奏效。它適用於我使用我的模型類之一,基本的人類..我不明白這種行爲... – adis 2012-04-17 14:02:03