2012-10-17 21 views
3

我有一個窗體的問題,問題是我無法正確顯示錯誤(我認爲是這樣)。驗證工作正常。玩框架2.0 scala窗體錯誤處理

當舊密碼不正確時另一方面,當密碼不匹配時,錯誤消息顯示在輸入框下方,錯誤不會出現在任何地方。從視圖

如果我做一些調試,我得到的數據 @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"> 
    } 
+0

它可能是一個轉儲的問題,而是你如何讓你的形式'user.id'? –

+0

我使用https://github.com/t2v/play20-auth中的模塊,並且有一個名爲authorizedAction的方法,它給了我一個用戶。 – mapek

+0

謝謝,我會檢查。 –

回答

1

首先你可能需要使用輔助方法爲您的密碼字段,因爲有一個對他們的。看看views.html.helper.inputPassword,並使用它,像這樣:

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

之所以密碼不匹配沒有顯示錯誤,這是必然的形式本身,而不是一個特定的錯誤領域。你必須檢查你的表格的errors字段,它會給你一個Seq[FormError]。然後,您可以以適當的方式顯示這些...

問候

+0

Thx求助,但inputPassword的工作奇怪,當密碼更新沒有成功時,我得到填充值的表單。 我的解決方案是:@ helper.input(pass_form(「old_password」),'_ error-> pass_form(「old_password」)。error) – mapek