【问题标题】:Why error message from validate() method is not displayed in the template?为什么 validate() 方法的错误消息没有显示在模板中?
【发布时间】:2015-03-19 08:43:31
【问题描述】:

重新发布的原因:我已经发布了这个问题 HERE ,但我没有得到任何答案,只有一条不清楚的评论。所以我正在考虑再次发布它以寻求帮助。

所以,

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

这是我的验证方法:

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

更新:我从评论中得知,我一直在错过一些行动,但我不太明白。我是这个东西的新手,非常感谢任何明确的帮助。

更新:我尝试在validate() 方法中编写返回语句,如下所示:

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

这都没有用!这样做的问题是,它正在显示返回语句,但在保存页面之后不应该发生!

【问题讨论】:

  • 您知道 return 语句不显示内容,对吧?那不是他们所做的。 (这就像问为什么int i = 5; 不显示5)
  • @immibis 但这是网络开发中的闪退错误!
  • @davide 我已经在问题中指定了它!请检查!
  • 哦,对不起,我没有意识到名为validate的框架。 (如果您是从头开始编写自己的代码,那么除非您显示它,否则当然不会显示任何内容;但在这种情况下,无论您的 validate 方法返回什么,框架都会将其用作错误消息)

标签: java scala playframework playframework-2.0


【解决方案1】:

我无法发表评论(必须有 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;
}

不是吗?

【讨论】:

  • 实际上我的控制器中有这个,它与其他密码更改选项(忘记密码请求)相关联,但不是这个(我在问题中指定)更改密码的事情。我现在应该做什么? ://
  • 你应该在 GitHub 上推送你的代码并在此处发布链接。
  • 其实我找到了另一种方法来解决这个问题!谢谢!您的回答有助于找到解决我的问题的方法!这让我思考!
猜你喜欢
  • 2019-11-20
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2019-12-02
  • 2019-09-19
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多