Пользовательский NotEqualInputValidator в Wicket

Пользовательский NotEqualInputValidator в калитке

Wicket содержит множество встроенных валидаторов для разработчиков, напримерEqualInputValidator, он лучше всего подходит для сравнения идентичности двух компонентов формы. Однако Wicket не предоставил никакого валидатора для неравного валидатора.

NotEqualInputValidator

Здесь я беруEqualInputValidator в качестве ссылки и создаю новый настраиваемый валидатор под названием «NotEqualInputValidator» для не равного компаратора для двух компонентов формы.

package com.example.user;

import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.validation.AbstractFormValidator;
import org.apache.wicket.util.lang.Objects;

public class NotEqualInputValidator extends AbstractFormValidator {

    private static final long serialVersionUID = 1L;

    /** form components to be checked. */
    private final FormComponent[] components;

    /**
     * Construct.
     *
     * @param formComponent1
     *            a form component
     * @param formComponent2
     *            a form component
     */
    public NotEqualInputValidator(FormComponent formComponent1,
            FormComponent formComponent2) {
        if (formComponent1 == null) {
            throw new IllegalArgumentException(
                    "argument formComponent1 cannot be null");
        }
        if (formComponent2 == null) {
            throw new IllegalArgumentException(
                    "argument formComponent2 cannot be null");
        }
        components = new FormComponent[] { formComponent1, formComponent2 };
    }

    public FormComponent[] getDependentFormComponents() {
        return components;
    }

    public void validate(Form form) {
        // we have a choice to validate the type converted values or the raw
        // input values, we validate the raw input
        final FormComponent formComponent1 = components[0];
        final FormComponent formComponent2 = components[1];

        if (Objects.equal(formComponent1.getInput(), formComponent2.getInput())) {
            error(formComponent2);
        }
    }

}

Как это использовать?

Чтобы использовать его, просто прикрепите его как обычный валидатор.

    private PasswordTextField passwordTF;
    private PasswordTextField cpasswordTF;

    add(new NotEqualInputValidator(oldpasswordTF,passwordTF));

Note
Возможно, вам будет интересно прочитать это «http://www.example.com/wicket/create-custom-validator-in-wicket/[как создать собственный валидатор в Wicket]» .