Custom NotEqualInputValidator dans le guichet

NotEqualInputValidator personnalisé dans Wicket

Wicket contient de nombreux validateurs intégrés pour les développeurs, par exemple,EqualInputValidator, il est préférable de comparer l'identité de deux composants de formulaire. Cependant, Wicket n'a fourni aucun validateur pour un validateur différent.

NotEqualInputValidator

Ici, je prendsEqualInputValidator comme référence et crée un nouveau validateur personnalisé appelé «NotEqualInputValidator», pour un comparateur différent pour deux composants de formulaire.

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

}

Comment l'utiliser?

Pour l'utiliser, il suffit de l'attacher comme un validateur normal.

    private PasswordTextField passwordTF;
    private PasswordTextField cpasswordTF;

    add(new NotEqualInputValidator(oldpasswordTF,passwordTF));

Note
Vous pouvez être intéressé à lire ceci "http://www.example.com/wicket/create-custom-validator-in-wicket/[comment créer un validateur personnalisé dans Wicket]" .