为什么模板中不显示来自validate()方法的错误消息?

时间:2015-03-19 08:43:32

标签: java scala playframework playframework-2.0

重新发布的原因:我已经发布了此问题 HERE ,但我没有得到任何答案,但评论不清楚。所以我想再次发布它以获得一些帮助。

SO,

我有一个验证方法,用于检查两个密码(密码和确认密码)是否匹配。

这是我的验证方法:

public String validate() {
if (!this.password.equals(this.passwordConfirm)) {
    return "Passwords do not match";
}
return null;
}

在我的scala中,我得到了以下内容。

 @if(accountForm.hasGlobalErrors) {
     <p class="error">
     @accountForm.globalError.message
     </p>
 }

 @if(flash.contains("success")) {
    <p class="success">
    @flash.get("success")
    </p>
 }

 @helper.inputPassword(accountForm("password"),'_label -> "Password",     'placeholder -> "**********")
 @helper.inputPassword(accountForm("passwordConfirm"),'_label -> "Confirm Password", 'placeholder -> "**********")

问题:一切都按预期工作但是当在字段中输入两个不同的密码时,它不会显示从validate()方法返回的错误消息。我不知道为什么。以下是我的CSS错误。

p.error{
   border-style: outset;
   border-radius: 5px; 
   color: red;
   font-weight: bold;
   background-color: white;
   padding: 10px 10px 10px 10px;
}

更新:我从评论中得知,我已经失去了一些动作,但我并没有完全明白。我是这个人的新手,非常感谢任何明确的帮助。

UPDATE :我尝试用validate()方法编写return语句,如下所示:

return Context.current().flash().put("error", "Passwords do not match");

这既不奏效!这样做的问题是,它显示了return语句,但在保存了不应该发生的页面之后!

1 个答案:

答案 0 :(得分:0)

我无法评论(必须要有50个声望),所以我在这里提出这个问题。控制器操作的内容与请求绑定表单的内容是什么?

你必须有类似的东西:

public final Result submit() {
    Result result = null;

    Form<Something> boundForm = Form.form(Something.class).bindFromRequest();
    if (boundForm.hasErrors()) {
        result = badRequest(sometemplate.render(boundForm));
    } else {
        potentiallyDoSomethingWith(boundForm.get());
        result = redirect(route.Application.somewhere());
    }
    return result;
}

不好吗?