Codenameone 使用验证器验证表单
在验证器组件上,我需要计算哪个textfield出错,我找到了一个Isvalid()方法,但对我的porpuse无效,因为我不知道哪个值出错 我如何知道哪个约束和组件无效 这不是公开的Codenameone 使用验证器验证表单,codenameone,Codenameone,在验证器组件上,我需要计算哪个textfield出错,我找到了一个Isvalid()方法,但对我的porpuse无效,因为我不知道哪个值出错 我如何知道哪个约束和组件无效 这不是公开的 关于我不确定您是否使用了正确的验证器,因为您没有提供任何代码。但是,下面的代码应该可以帮助您开始: 使用单个验证器进行验证: import com.codename1.ui.validation.LengthConstraint; import com.codename1.ui.validation.Regex
关于我不确定您是否使用了正确的
验证器,因为您没有提供任何代码。但是,下面的代码应该可以帮助您开始:
使用单个验证器进行验证:
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
}
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));
使用单个验证器进行验证:
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
}
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));
除上述内容外,我建议使用TextComponent,因为它将在每个组件下方无缝显示错误消息,而无需对话框。
作为奖励,您甚至可以禁用“提交”按钮,直到所有已验证的字段都有效:
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
}
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));
感谢Diamond,这就是问题所在,y需要评估每个组件,因为y希望显示每个文本字段的自定义对话框。只有一个唯一的isValid方法,我需要在出错时查找textField。您可以单独验证这些字段。通过多个示例查看更新的答案。非常感谢Diamond,我从来没有使用TextComponent(我不知道这个组件)来解决我的问题。y创建了一个单独的约束变量,如果isValid global Response为false,则y评估每个约束,为了获取消息,我使用了来自验证程序的getMessage,并将其传递给每个组件。