【问题标题】:Formatting ValidationError in View with Play Framework使用 Play 框架在视图中格式化 ValidationError
【发布时间】:2014-02-15 19:29:49
【问题描述】:

我无法从我的视图中访问 ValidationError 消息。 我设法获得的唯一输出是:

[ValidationError(username,Too short, sorry ;),[6])]
[ValidationError(password,Confirmation password doesn't match,[])]

我只想输出错误消息:“太短,抱歉;)”和“确认密码不匹配”。

我找到的解决方法是从表单中调用特定字段,然后访问错误消息:

@form("password").error.map(_.message).getOrElse("")

谢谢,

我的观点 register.scala.html :

@if(form.hasErrors) {
<div class="form-group">
    <div class="alert alert-danger col-lg-6 text-center">
       @for((key, vamlue) <- form.errors){
         @value<br />
       }
   </div>
</div>
}

我的控制器:

public static Result registerSubmit(){
        Form<User> registerForm = form(User.class).bindFromRequest();
        String passwordConfirmation = registerForm.field("passwordConfirmation").value();

        if(!registerForm.field("password").valueOr("").equals(passwordConfirmation)){
            ValidationError e = new ValidationError("password", "Confirmation password doesn't match");
            registerForm.reject(e);
        }

        if (registerForm.hasErrors()){
            // Handle Error
            return badRequest(register.render(registerForm));
        } else {
            // Check if all data are fine    
            // TODO : Redirect to Login Page
            return ok(register.render(registerForm));
        }
    }

最后是模型 User.java :

@Required
@MinLength(6)
String username;

@Required
@Email
String email;

@Required
@MinLength(6)
String password;

【问题讨论】:

  • 我不确定你在问什么。
  • 我试图只打印可读的错误消息,而不是 ValidationError 对象。

标签: java scala playframework playframework-2.0 validationerror


【解决方案1】:

听起来您想收集所有表单错误并将它们显示在表单顶部。我认为这是您要在 HTML 模板中使用的代码块

@if(form.hasErrors) {
  <div class="form-group">
    <div class="alert alert-danger col-lg-6 text-center">
      @for(entry <- form.errors.entrySet){
        @for(error <- entry.getValue){
          @error.message <br/>
        }
      }
    </div>
  </div>
}

如果您将 form.errors 映射从 Java 映射转换为 Scala 映射,您可以使您的代码块比嵌套的 for 循环更简洁一些,但这应该可以完成工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2015-06-24
    • 2015-08-17
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多