validation - 如何在 Play 中的特定表单字段上设置自定义验证错误! 2.*

标签 validation playframework-2.0

基本上我有以下表单类。

public static class BasicForm {
    @Required
    public String name;
    @Required
    @Email
    public String email;
    @Required
    public String password;
    @Required
    public String confirmPassword;

    public List<ValidationError> validate() {
        if (User.findByEmail(email) != null) {
            List<ValidationError> validationErrorList = new ArrayList<ValidationError>();
            validationErrorList.add(new ValidationError("email", "error.alreadyexists", new ArrayList<Object>()));
            return validationErrorList;
        }
        return null;
    }

}

如您所见,我正在尝试验证电子邮件地址的唯一性。
如果电子邮件不是唯一的,我想在电子邮件字段上显示错误消息,而不是作为全局错误消息

实现 validate() 方法来实现这一目标的正确方法是什么?

最佳答案

您应该使用 validate具有以下签名的方法:

public Map<String, List<ValidationError>> validate()

通过这种方式,您可以向单个字段添加错误,如下所示:

Map<String, List<ValidationError>> errors = null;
if (emailIsBad) {
    errors = new HashMap<String, List<ValidationError>>();
    List<ValidationError> list = new ArrayList<ValidationError>();
    list.add(new ValidationError("email", "email is bad"));
    errors.put("email", list);
}
return errors;

请注意,如果您应该返回一个空的 map ,它仍然会将表单呈现为错误的。如果您想要 validate()方法要成功,你需要返回null。

关于validation - 如何在 Play 中的特定表单字段上设置自定义验证错误! 2.*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404088/

相关文章:

model-view-controller - 路由到 Play 中的静态文件!框架2.0

javascript - parsley.js 自定义验证器 - 不等于

javascript - jQuery Mobile 表单验证 - 选择哪个插件?

validation - 测试/验证 SCORM 对象?

java - 如何使用 play Framework 2.0 View 创建常量

scala - Play Slick 2.1.0 此 DBMS 仅允许从 INSERT 返回单个 AutoInc 列

Scala - 在通用接口(interface)上使用 guice multibinder 失败

Scala:回归有它的位置

ruby-on-rails - validates_inclusion_of、acts_as_tree 和 rspec 的问题

jquery - 如何在提交表单后显示加载图标,但在模型在 ASP .NET MVC 中无效的情况下不显示