【问题标题】:Throw Global Validation error in Play在 Play 中引发全局验证错误
【发布时间】:2015-08-25 16:14:52
【问题描述】:

我开始使用 Play 框架,现在正在使用 Play 的验证功能。我尝试验证表单字段,如下面的视图模型类所示。

public class ViewModel {

    @Required(message = "Please enter username")
    public String username;
    @Required(message = "Please enter the password")
    public String password;

}

下面是相同的简单演示 UI。

现在,当输入的用户名和密码在数据库检查时不正确时,我想抛出一个全局错误消息。

以下是我的控制器操作中的代码

        Form<ViewModel> formData = Form.form(ViewModel.class).bindFromRequest();
        if (formData.hasErrors()) {
            Logger.info("There are server side validation errors in the form..");
            return badRequest(index.render(formData));
        } else {
           if(notFoundInDb){
             //check against db
             // some db related code here assuming record not found in db  
             ViewModel user = formData.get();
             //formData.error("invalid username and password");
             return badRequest(index.render(formData));
           }else{
             //success
             return redirect("/nextAction");
           }
    }

我曾尝试使用formData.error("invalid username and password");但不确定。在显示全局错误消息的视图模板中,我使用了以下代码。

@if(signIn.hasGlobalErrors) {
  <p>
       @signIn.globalError.message
  </p>
}

如何从控制器操作中抛出一些不错的全局错误消息?我正在使用 Play 2.4.2 版本。

【问题讨论】:

    标签: playframework playframework-2.0


    【解决方案1】:

    您可以使用form.hasErrorsform.globalErrorsform("singleElementName").errors来获取表单的验证错误,例如

    @if(form.hasErrors) {
      // Does form has any error, global or individual?
    }
    @for(error <- form.globalErrors) {
      // Global errors, use @error.message to get the message
    }
    @for(error <- form("singleElementName").errors) {
      // Individual error for a single form element, use @error.message
    }
    

    【讨论】:

    • 如何从控制器动作中发送全局错误消息?
    • 您在寻找类似stackoverflow.com/questions/18943169/… 的东西吗?您可以使用“”作为键创建一个全局变量:new ValidationError("", "Invalid email")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2015-12-10
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多