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