在游戏框架2显示错误(Display error in Play Framework 2)

2019-08-06 14:01发布

首先我要声明,我认为,对2.0播放文件是真的,真的很糟糕的。

我正在寻找一种方式来放置HTML下方的验证错误选择喜欢打会做一个自动生成的输入框。

我试图复制的播放输入框生成的HTML代码的结构,但我敢肯定,我失去了我的HTML代码中的一些IFERROR - 斯卡拉模板线。

坏这是不可能找到播放2.0文档已被播放<2.0文档涉及的主题。 所以,如果你正在寻找的文档解决方案,您将土地上的旧,不工作,文档。 很沮丧!

Answer 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()
                }
            }
        }
    }
}


Answer 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));
        }


文章来源: Display error in Play Framework 2