Erstellen Sie einen benutzerdefinierten Validator in Wicket
In diesem Lernprogramm erstellen Sie einen benutzerdefinierten Kennwortprüfer und hängen ihn an ein Kennwortfeld an.
Siehe Zusammenfassung Schritte zum Erstellen eines benutzerdefinierten Validators:
1. ImplementiertIValidator
.
import org.apache.wicket.validation.IValidator; public class StrongPasswordValidator implements IValidator{ ... }
2. validate(IValidatable validatable)
überschreiben.
public class StrongPasswordValidator implements IValidator{ ... @Override public void validate(IValidatable validatable) { //get input from attached component final String field = validatable.getValue(); } }
3. Angehängter benutzerdefinierter Validator zur Formularkomponente.
public class CustomValidatorPage extends WebPage { public CustomValidatorPage(final PageParameters parameters) { final PasswordTextField password = new PasswordTextField("password",Model.of("")); //attached custom validator to password field password.add(new StrongPasswordValidator()); //... } }
Vollständiges Beispiel
Im folgenden Wicket-Beispiel wird beschrieben, wie Sie einen benutzerdefinierten Kennwortprüfer erstellen und eine Fehlermeldung anzeigen, wenn das Kennwort nicht mit einem vordefinierten Muster übereinstimmt.
1. StrongPasswordValidator
Eine benutzerdefinierte Kennwortüberprüfung.
package com.example.user; import java.util.regex.Pattern; import org.apache.wicket.validation.IValidatable; import org.apache.wicket.validation.IValidator; import org.apache.wicket.validation.ValidationError; public class StrongPasswordValidator implements IValidator{ private final String PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"; private final Pattern pattern; StrongPasswordValidator() { pattern = Pattern.compile(PASSWORD_PATTERN); } @Override public void validate(IValidatable validatable) { final String password = validatable.getValue(); // validate password if (pattern.matcher(password).matches() == false) { //Message from key "StrongPasswordValidator.not-strong-password" error(validatable, "not-strong-password"); } } private void error(IValidatable validatable, String errorKey) { ValidationError error = new ValidationError(); error.addMessageKey(getClass().getSimpleName() + "." + errorKey); validatable.error(error); } }
Datei: package.properties
StrongPasswordValidator.not-strong-password = Password required at least ... (omitted)
2. An Bauteil anbringen
Hängen Sie den obigen benutzerdefinierten Validator an ein Kennwortfeld an.
package com.example.user; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.model.Model; public class CustomValidatorPage extends WebPage { public CustomValidatorPage(final PageParameters parameters) { add(new FeedbackPanel("feedback")); final PasswordTextField password = new PasswordTextField("password",Model.of("")); //attached custom validator to password field password.add(new StrongPasswordValidator()); Form> form = new Form("form") { @Override protected void onSubmit() { info("Done"); } }; add(form); form.add(password); } }
Wicket custom validator example
3. Demo
Start und Besuch -http://localhost:8080/WicketExamples/
Wenn Sie ein schwaches Kennwort eingeben, wird eine Fehlermeldung vom benutzerdefinierten Validator zurückgegeben und angezeigt.
Laden Sie es herunter -Wicket-Custom-Validator-Example.zip (9KB)