Проверка формы с помощью Google Web Toolkit?

Я новичок в GWT. Какие существуют хорошие решения для проверки формы? Я бы хотел, чтобы избежать опрокинуться, если это возможно.

Ответ 1

В моих приложениях 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();
}

Пример проверки подлинности Email

public class EmailValidator extends Validator {

 public boolean validate(String value) {
    if (value.matches("^[A-Za-z0-9._%+-][email protected][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

Если вам нравится этот подход, вы можете следовать этому. Проблема здесь в том, что мы не видим сообщение об ошибке непосредственно в пользовательском интерфейсе. Только в подсказке мы показываем.

Ответ 2

GXT и SmartGWT (оба из которых я бы настоятельно советовал по многим причинам) имеют форму проверки.

Рамка GWT Editor предоставляет среднее значение для отображения javax.validation.ConstraintViolation (вам все равно придется выполнять фактический показ, внедряя HasEditorErrors для получения ошибок для заданного поля; среда редактора только отправляет ошибки в соответствующие "поля" ), но ничего не нужно проверять на стороне клиента.

Недавно выпущенный GWT 2.3 имеет предварительную поддержку JSR 303 Bean Проверка на стороне клиента, но она еще не завершена: http://code.google.com/p/google-web-toolkit/wiki/BeanValidation Я думаю, что GWT 2.4 будет иметь полную (или почти полную) поддержку.

Обратите внимание, что ставка GWT при проверке проверяется на проверке объектов, а не на проверке "полей формы", редактирующих свойства объекта.

Ответ 3

В настоящее время мы используем этот проект для проверки формы: http://code.google.com/p/gwt-validation/

Это исходный код, который служит основой новой системы проверки подлинности GWT 2.4.

Крис Буффало делает замечательную работу над этим проектом. Работает из коробки для нас.