私は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を押してください!
私のケースでは、まだデータベースに保存されていないものをログに記録していましたが、実際にはまだ存在しませんでした。
staticというキーワードを削除した場合、コンパイルエラーが発生します。type Loginはobject controllers.Applicationのメンバーではありません。 BTW:staticはzentaskサンプルプロジェクトでも述べたとおりです。 – adis
試用版のように、クラスをアプリケーションクラスからパブリッククラスとして独自のファイルに移動して再試行できますか?インポートを更新することを忘れないでください。 –
こんにちはピエール、Login.classとは別に、それはまだ動作しませんでした。モデルクラス、基本Personクラスのいずれかを使用したときに動作します。私はこの動作を理解していません... – adis