5

Play 2.0の学習を続けており、ログインフォームに取り組んでいます。基本的に、Zentasksが提供するサンプルプロジェクトと同様のフォーム...

私の問題は、データベースにユーザーが見つからなかった場合のエラーメッセージです。エラーは、次の行で発生します。

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内の私の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;
}
}

ところで、私はデータベースとしてmySqlを使用しています。そして、私には有効なユーザーがいて、コードは問題なく機能しています...

更新17-04-2012

Play2.0で奇妙なことに遭遇した場合は、慎重にデバッグしてください。私はPHPから来て、sysoutsでデバッグしてみました!しかし、それは大丈夫ではありません。play debug runを実行し、どこで問題が発生するかがわかるまでF6キーを押します。

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

4

1 に答える 1

0

これはタイプミス(静的部分)ですか?

public static class Login {
}

そうでない場合は、それが理由かもしれません。フォームクラスはPOJOである必要があります。

于 2012-04-16T10:56:35.913 に答える