gwt - 使用 Google Web Toolkit 进行表单验证?

标签 gwt validation

我是 GWT 新手。表单验证有哪些好的解决方案?如果可能的话,我想避免自己动手。

最佳答案

在我的 GWT 应用程序中,我总是使用自定义验证器类。我创建了自己的文本框类,它扩展了 gwt 文本框。我调用 CustomTextBox 而不是 gwt 的文本框。

CustomTextBox.java

public class CustomTextBox extends TextBox implements HasValidators{

private static final String TEXTBOX_VALIDATION_ERROR_STYLE = "error-text-box";
private String errorMessage = "";
private List<Validator> validators = new ArrayList<Validator>();

public CustomTextBox() {
   }

public CustomTextBox(String name) {
    setName(name);
}

public String getErrorMessage() {
    return errorMessage;
}

public void setErrorMessage(String errorMessage) {
    this.errorMessage = errorMessage;
}

public void addValidator(Validator validator) {
    validators.add(validator);
}

public boolean validate() {
    boolean validationResult = true;
    for (Validator validator : validators) {
        validationResult = validator.validate(getValue().trim());
        if (!validationResult) {
            errorMessage = validator.getErrorMessage();
            break;
        }
        errorMessage = validator.getErrorMessage();
    }
    setErrorStyles(validationResult);
    return validationResult;
}

private void setErrorStyles(boolean validationResult) {
    if (validationResult) {
        removeStyleName(TEXTBOX_VALIDATION_ERROR_STYLE);
        setTitle("");
    } else {
        addStyleName(TEXTBOX_VALIDATION_ERROR_STYLE);
        setTitle(errorMessage);
    }
}

@Override
public void setValue(String s) {
    removeStyleDependentName(TEXTBOX_VALIDATION_ERROR_STYLE);
    super.setValue(s);
}

@Override
public String getValue() {
    return super.getValue().trim();
}
}

Validator.java

public abstract class Validator {

    public String errorMessage;

    public abstract boolean validate(String value);

    public abstract String getErrorMessage();
}

示例电子邮件验证器

public class EmailValidator extends Validator {

 public boolean validate(String value) {
    if (value.matches("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")) {
        errorMessage = "";
        return true;
    } else {
        errorMessage = "Enter valid email Id";
        return false;
    }
}

public String getErrorMessage() {
    return errorMessage;
 }
}

我的验证错误如下所示

Sample validation error

如果您喜欢这种方法,您可以遵循此方法。这里的问题是我们不直接在 UI 中显示错误消息。仅在工具提示中我们显示。

关于gwt - 使用 Google Web Toolkit 进行表单验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163893/

相关文章:

css - 为什么重新绘制后 Safari 会忽略 css 表格行 (tr) 高度属性?

java - 如何在 JSNI 中使用 GWT $entry 函数?

java - 验证方法的良好命名约定是什么?

javascript - 底部验证失败,为什么浏览器显示在页面顶部?

javascript - 使用 JavaScript 验证表单语句上的选择字段不起作用

java - 调试/查看 GWT 生成的 java 代码的源代码

gwt - 带有服务层的RequestFactory

java - 在 GWT 中将 File 和 HashMap 发送到服务器

django - 删除自定义验证器后,Django 崩溃并且无法恢复到运行备份。漏洞?

validation - 由于重复的 "class"规范和单选按钮标签问题,站点将无法验证