Benutzerdefinierter NotEqualInputValidator in Wicket

Benutzerdefinierter NotEqualInputValidator in Wicket

Wicket enthält viele integrierte Validatoren für Entwickler, z. B.EqualInputValidator. Es ist am besten, die Identität zweier Formularkomponenten zu vergleichen. Wicket hat jedoch keinen Validator für einen nicht gleichen Validator bereitgestellt.

NotEqualInputValidator

Hier nehme ichEqualInputValidator als Referenz und erstelle einen neuen benutzerdefinierten Validator namens "NotEqualInputValidator" für einen nicht gleichen Vergleicher für zwei Formularkomponenten.

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

}

Wie benutzt man es?

Um es zu benutzen, befestigen Sie es einfach wie einen normalen Prüfer.

    private PasswordTextField passwordTF;
    private PasswordTextField cpasswordTF;

    add(new NotEqualInputValidator(oldpasswordTF,passwordTF));

Note
Es könnte Sie interessieren, diese „http://www.example.com/wicket/create-custom-validator-in-wicket/[how to create a custom validator in Wicket]“ zu lesen. .