播放框架2.0 scala表单错误处理

时间:2012-10-17 15:28:47

标签: forms scala playframework-2.0

我的表单有问题,问题是我无法正确显示错误(我想是这样)。验证工作正常。

当旧密码不正确时,如果密码不匹配,则输入框下方会显示错误消息错误不会出现在任何地方。

如果我做一些调试,我会得到数据:

从视野中:   @pass_form("password").errors

我明白了:

FormError(password,Passwords dont match,WrappedArray()) 

所以我的问题是如何修复视图中的表单或代码,以正确打印该错误。

Form(
    mapping(
        "old_password" -> text.verifying(Messages("forms.password.old.mismatch"),
        password => User.correct_?(user.id, password)),
       "password" -> tuple(
       "new" -> text(minLength = conf.getInt("password.length.min").get),
       "confirm" -> text).verifying(Messages("forms.password.new.mismatch"), 
          passwords => passwords._1 == passwords._2)
      )
    ((_, password) => password._1)((_) => Some(("", ("", ""))))
         )

在视图中我有:

@helper.form(action = routes.UserController.submitPassword) {

        @helper.input(pass_form("old_password")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        @helper.input(pass_form("password.new")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        @helper.input(pass_form("password.confirm")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        <input type="submit" value="Set">
    }

1 个答案:

答案 0 :(得分:1)

首先,您可能希望对密码字段使用辅助方法,因为它们有一个。看看views.html.helper.inputPassword并像这样使用它:

@helper.inputPassword(field = pass_form("old_password"))

未显示密码不匹配错误的原因是,它是绑定到表单本身而不是特定字段的错误。您必须先检查表单的errors字段,然后才会显示Seq[FormError]。然后,您可以以适当的方式显示这些......

祝你好运