0
public static Result authenticate() {
    Form<LoginForm> loginForm = form(LoginForm.class).bindFromRequest();

    if (loginForm.hasErrors()) {
        return ok(views.html.Account.index.render(loginForm));
    } else {
            String email = loginForm.get().email;
            User user = User.findByUsername(email);

            if (Hash.checkPassword(loginForm.get().password, user.passwordHash)) {
                // set session
                session("email", email);
                return redirect(routes.UserController.view(user.getId()));
            } else {
                return badRequest(views.html.Account.index.render(loginForm));
            }
        }
}

このコードを使用してユーザーを認証しますが、ログイン中に問題が発生した場合 (無効なユーザー名/パスワードなど) にエラー メッセージを表示したいと考えています。しかし、このオンラインでドキュメントを実際に見つけることはできません。エラー メッセージにフラッシュを使用することに関するドキュメントのほとんどは Play 1.x に関するものです。

1) このログイン機能にエラー メッセージを追加するにはどうすればよいですか?

2) ビューでこれらのエラー メッセージにアクセスするにはどうすればよいですか?

3) Play のフォームクラスは (一般的に) どのように機能しますか? エラーの作成と処理を処理します (また、エラーにアクセスするにはどうすればよいでしょうか?)

ありがとう!:-)

4

2 に答える 2

0

@1) 通常、検証を介してエラーを追加します。したがって、LoginForm には validate-method が必要です

@2) form.errors() または fomr.error("Field") および form.globalErrors()

@3) バインディングでエラーが作成され、フォームのコンストラクターに入れられます。Map がコピーされないため、 form.errors().put(key, error) がどのように機能するか。しかし、これは単なるハックであり、将来変更される可能性があります。

于 2012-06-29T12:12:45.077 に答える