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]" .