【问题标题】:Display error in Play Framework 2Play Framework 2 中的显示错误
【发布时间】:2013-01-12 13:14:24
【问题描述】:

首先我想说的是,我认为 2.0 的 Play 文档非常非常糟糕。

我正在寻找一种在 HTML 选择下方放置验证错误的方法,例如 play 会为自动生成的输入框执行此操作。

我试图复制 Play 输入框生成的 HTML 代码的结构,但我确定我的 HTML 代码中缺少一些 ifError-Scala 模板行。

遗憾的是,无法找到 Play

【问题讨论】:

标签: validation error-handling playframework playframework-2.0


【解决方案1】:

我使用此代码在表单上显示一个全局引导警报框:

@if(form.hasErrors) {
    <div class="alert alert-error">
        <a class="close" data-dismiss="alert">x</a>
        @if(form.errors.size() > 0) {
            @for((key, value) <- form.errors) {
                @key.toString() : 
                    @for(err <- value) {
                        @err.message().toString()
                    }
            }
        } else {No error returned.}
    </div>
}

表单错误键值对的输出是带有@key.toString() : @value.message.toString 的引导警报框。

如果您想在字段级别显示错误,您可能需要使用另一个用于 form.errors 映射值的条件语句稍微修改它,以便它仅针对特定字段触发。我还没有测试过这个,但它会是这样的:

@if(form.hasErrors) {
    @if(form.errors.size() > 0) {
        @for((key, value) <- form.errors) {
            @for(err <- value) {
                @if(err.contains("YourSelectFieldName")) {
                    @err.message().toString()
                }
            }
        }
    }
}

【讨论】:

  • sn-p 运气好吗?
  • 在 2.1 中 form.errors 包含 FormErrors 的 Seq 而不是元组,但除此之外,它几乎没有变化。
【解决方案2】:

2manyprojects 的答案非常有效,但您可以在控制器中执行相同的操作。这完全取决于您的喜好和风格。

public static Result save() {
        Form<form> boundForm = form.bindFromRequest();
        if (boundForm.hasErrors()) {
            String errorMsg = "";
            java.util.Map<String, List<play.data.validation.ValidationError>> errorsAll = boundForm.errors();
            for (String field : errorsAll.keySet()) {
                errorMsg += field + " ";
                for (ValidationError error : errorsAll.get(field)) {
                    errorMsg += error.message() + ", ";
                }
            }
            flash("error", "Please correct the following errors: " + errorMsg);
            return badRequest(detail.render(boundForm));
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多