Пользовательский 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]» .