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));
            }
        }
}

我们使用此代码对用户进行身份验证,但我们希望在登录过程中出现问题(无效的用户名/密码等)时显示错误消息。但是,我们在网上找不到任何关于此的文档——因为大多数关于使用 flash 获取错误消息的文档主要是针对 Play 1.x 的。

1) 我们如何向此登录功能添加错误消息?

2)我们如何在视图中访问这些错误消息?

3) Play 中的表单类(通常)如何处理!处理错误的创建和处理(以及我们如何访问它们?)

谢谢!:-)

4

2 回答 2

0

@1)通常您通过验证添加错误。所以你的 LoginForm 应该有一个验证方法

@2) form.errors() 或 fomr.error("Field") 和 form.globalErrors()

@3)在绑定时,错误将被创建并放入表单的构造函数中。form.errors().put(key, error) 应该如何工作,因为 Map 没有被复制。但这更像是一种黑客攻击,将来可以更改。

于 2012-06-29T12:12:45.077 回答
0

我建议form.withError("name", "Error") 还有form.withGlobalError("Error")

于 2013-07-05T15:16:15.207 回答