2012-04-16 9 views
5

私はPlay 2.0の学習を続けており、私はのログインフォームに取り組んでいます。基本的に提供Zentasksサンプルプロジェクトと同様の形...nullオブジェクトの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()); 
} 
} 

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を使用しています。あなたはただ慎重にそれをデバッグPlay2.0に奇妙なことに遭遇した場合、私は、有効なユーザコードがうまく働いている...

UPDATE 17-04-2012

を持っています。私はPHPから来て、私はsysoutsでデバッグを試みました!しかし、それは大丈夫ではありません。 を実行してデバッグを実行し、どこが間違っているか知るまでF6を押してください!

私のケースでは、まだデータベースに保存されていないものをログに記録していましたが、実際にはまだ存在しませんでした。

答えて

0

これはタイプミス(スタティック部分)ですか?

public static class Login { 
} 

そうでない場合は、その理由が考えられます。 AFAIKフォームクラスはPOJOでなければなりません。

+0

staticというキーワードを削除した場合、コンパイルエラーが発生します。type Loginはobject controllers.Applicationのメンバーではありません。 BTW:staticはzentaskサンプルプロジェクトでも述べたとおりです。 – adis

+1

試用版のように、クラスをアプリケーションクラスからパブリッククラスとして独自のファイルに移動して再試行できますか?インポートを更新することを忘れないでください。 –

+0

こんにちはピエール、Login.classとは別に、それはまだ動作しませんでした。モデルクラス、基本Personクラスのいずれかを使用したときに動作します。私はこの動作を理解していません... – adis

関連する問題