使用验证器验证表单

问题描述

在Validator组件上,我需要评估哪个文本字段出现错误,我找到了Isvalid()方法,但对我的porpuse无效,因为我不知道哪个值出现错误

我怎么知道哪个约束和组件无效?,

The

boolean isValid(Component cmp) 

不公开。

致谢

解决方法

我不确定您是否使用正确的Validator,因为您未提供代码。但是,下面的代码应该可以帮助您入门:

使用单个验证器进行验证:

import com.codename1.ui.validation.LengthConstraint;
import com.codename1.ui.validation.RegexConstraint;
import com.codename1.ui.validation.Validator;

.
.
.

Validator val = new Validator();
val.setValidationFailureHighlightMode(Validator.HighlightMode.UIID);
val.addConstraint(emailField,RegexConstraint.validEmail())
   .addConstraint(passwordField,new LengthConstraint(6));

if (val.isValid()) {
    System.out.println("All validated fields pass the constraints");
} else {
    // show dialog here
}

使用单个验证器进行验证:

import com.codename1.ui.validation.LengthConstraint;
import com.codename1.ui.validation.RegexConstraint;
import com.codename1.ui.validation.Validator;

.
.
.

Validator valEmail = new Validator();
valEmail.setValidationFailureHighlightMode(Validator.HighlightMode.UIID);
valEmail.addConstraint(emailField,RegexConstraint.validEmail());
if (valEmail.isValid()) {
    System.out.println("Email field passes the constraint");
} else {
    // show dialog here
}

Validator valPassword = new Validator();
valPassword.setValidationFailureHighlightMode(Validator.HighlightMode.UIID);
valPassword.addConstraint(passwordField,new LengthConstraint(6));

if (valPassword.isValid()) {
    System.out.println("Password field passes the constraint");
} else {
    // show dialog here
}

除上述内容外,我还建议使用TextComponent,因为它将在每个组件下方无缝显示错误消息,而无需对话框。

作为奖励,您甚至可以禁用“提交”按钮,直到所有经过验证的字段均有效:

import com.codename1.ui.validation.LengthConstraint;
import com.codename1.ui.validation.RegexConstraint;
import com.codename1.ui.validation.Validator;
import com.codename1.ui.*;

.
.
.

TextComponent email = new TextComponent().constraint(TextArea.EMAILADDR)
        .labelAndHint("Email").focusAnimation(false);
email.setName("email");

TextComponent password = new TextComponentPassword()
        .labelAndHint("Password").focusAnimation(false);
password.setName("password");

Button submit = new Button("Submit");

Validator val = new Validator();
val.setValidationFailureHighlightMode(Validator.HighlightMode.UIID);
val.addSubmitButtons(submit)
        .addConstraint(email,RegexConstraint.validEmail())
        .addConstraint(password,new LengthConstraint(6));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...