表单的“验证”方法不会显示错误

时间:2014-02-05 05:47:40

标签: scala playframework playframework-2.2

我有一个用于验证用户身份的标准,简单的代码:

# controller
  val addForm = Form(
    tuple("email" -> nonEmptyText, "password" -> nonEmptyText)
      .verifying("Invalid email or password", result => User.authenticate(result._1, result._2).isRight)
  )

  def add = Action { Ok(views.html.session.add(addForm)) }


  def create = Action {
    addForm.bindFromRequest.fold(
      failure => BadRequest(views.html.session.add(failure)),
      success => Redirect(routes.Home.index)
        .flashing("key1" -> "You have logged in.")
    )
  }

如果不是User.authenticate(result._1, result._2).isRight,我预计它会显示错误,但没有出现错误。是的,身份验证运行良好,但失败时没有错误。

@helper.form(action = routes.Session.create()) {

    @helper.inputText(form("email"))
    @helper.inputText(form("password")) 
    <!-- ........... -->
  }

为什么?

2 个答案:

答案 0 :(得分:5)

您是否按照

的方式检查了您的视图
@if(addForm.hasErrors) { ... }

例如,基本布局可能是:

@if(addForm.hasErrors) {
  <div class="alert-message error">
    <p>Please correct the following:</p>
    <ul>
      @addForm.errors.map { error =>
        <li>@error.key @error.message</li>
      }
    </ul>
  </div>
}

答案 1 :(得分:0)

您没有表单中的密钥来显示此错误,这就是错误未显示的原因

尝试使用nonEmptytTxt验证,电子邮件和自定义验证的失败案例  BadRequest(views.html.sesion.add(failure.withError(“password”,“无效的电子邮件或密码”)))