2012-04-16 62 views
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,直到您知道它出錯的位置!

在我的情況下,我記錄的東西還沒有保存在數據庫中,實際上它還沒有存在!

回答

0

這是一個錯字(靜態部分)?

public static class Login { 
} 

如果不是這可能是原因。 AFAIK表單類必須是POJO。

+0

如果我刪除關鍵字靜態我得到編譯錯誤:鍵入登錄不是對象controllers.Application的成員。順便說一句:靜態也如zentask示例項目中提到的那樣... – adis 2012-04-16 12:09:06

+1

就像試驗一樣,您可以將該類從Applications類中移出到它自己的文件中,作爲公共類,然後重試?記得更新導入。 – 2012-04-17 08:00:16

+0

嗨皮埃爾,與Login.class分開它仍然沒有奏效。它適用於我使用我的模型類之一,基本的人類..我不明白這種行爲... – adis 2012-04-17 14:02:03

相關問題