codenameone - 使用验证器验证表单

标签 codenameone

在验证器组件上,我需要评估哪个文本字段出错,我找到了 Isvalid() 方法,但对我的海豚无效,因为我不知道哪个值出错。

我如何知道哪个约束和组件无效?,

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

关于codenameone - 使用验证器验证表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63381335/

相关文章:

camera - 在 CodenameOne 中将默认摄像头设置为前置/后置

ios - 将 iphone 设备添加到 Codenameone 证书生成器时的 Apple Id 查询

java - 从列表内的容器调用操作

codenameone - Codename One 和 AntMedia 使用中 WebRTC 的当前支持情况

android - Google oauth 使用 native 客户端在 Android 设备上登录代号 one 无法正常工作

java - LeadComponent() 在 getname() 方法中给出问题

java - CN1 CodeScanner 不工作

ios - 代号一 - iOS 调试构建安装失败

codenameone - iOS 中登录表单显示几秒钟

java - 代号 一个构建错误 : package java. sql 不存在