2

テンプレート ファイルのスニペットを次に示します。

 @helper.form(routes.Signup.signupCont) {
           @helper.inputText(signupForm("teamname"))
                  <div class="row">
                      <div class="span2"><label class="label_form_email_signup">Team name</label></div>
                      <div class="span4"><input id="Signup_teamname" type="text" class="span4 input" maxlength="24" name="teamname"></div>
                  </div>
}

フォーム定義:

def signupForm = Form(
    mapping(
      "teamname" -> text(minLength = 4, maxLength = 30).verifying(
        "Name already in use.", teamname => Team.findByNameStrict(teamname).isEmpty),
      "email" -> email.verifying(
        "Email already in use.", email => Team.findByEmail(email).isEmpty).verifying(
        "University email required", email => email.matches(""".*\.ac\.uk""")),
      "password" -> tuple(
        "main" -> text(minLength = 6),
        "confirm" -> text).verifying(
          "Passwords do not match.", password => password._1 == password._2))((teamname, email, password) =>
        (teamname, email, password._1))(data => Some(data._1, data._2, ("",""))))

たとえば、間違った電子メールを使用してフォームを送信すると、ページがリロードされますが、フォーム フィールドは空であり (デコンストラクターは失敗します)、電子メール ボックスの横にエラー メッセージは表示されません。この動作をどのように実装しますか?

4

1 に答える 1

1

ビューをレンダリングするときに、エラーのあるフォームをビューに渡していることを確認してください。例えば:

signUpForm.bindFromRequest.fold (
  errors => {
    /// assuming the page is signUp
    BadRequest(views.html.signUp(errors))
  },
  info => {
    // all ok, process the form 
  }
 )
于 2012-11-15T01:44:28.847 に答える