Определить собственные сообщения обратной связи в Wicket
Как определить свои собственные сообщения обратной связи в Wicket?
Например: если я даю неправильное имя пользователя, я хочу получить сообщение об ошибке, например "Имя пользователя неверно, попробуйте снова войти". вместо использования сообщения об ошибке по умолчанию.
Каким будет пример?
Ответы
Ответ 1
Вы можете отображать собственные сообщения об ошибках с помощью error()
и warn()
и info()
. Если вы хотите показать ошибки, зависящие от валидаторов или обязательного флага, вы можете определить файл свойств с тем же именем, что и класс, который содержит отображение поля → сообщение. Например:
Index.java
Form form = new Form("myform");
form.add(new TextField("name").setRequired(true));
form.add(new PasswordTextField("password").setRequired(true));
form.add(new TextField("phonenumber").setRequired(true));
Index.properties
Required=Provide a ${label} or else...
Все обязательные поля
myform.name.Required=You have to provide a name
Поле name
в форме myform
, когда это необходимо.
password.Required=You have to provide a password
Любое поле с именем password
, когда это необходимо.
phonenumber.Required=A telephone number is obligatory.
Любое поле с именем phonenumber
, когда это необходимо.
Это показывает различные способы настройки сообщения обратной связи для определенных компонентов.
Вы также можете поместить файлы свойств рядом со следующим уровнем компонента (в порядке важности, самый высокий):
- Класс страницы
- Класс компонентов
- Класс приложений
- Класс приложений калитки
Надеюсь, что поможет
Ответ 2
@user1090145: Я использовал перегруженный компонент метод error() в классе Validator:
private void error(IValidatable<String> validatable, String errorKey) {
ValidationError error = new ValidationError();
error.addMessageKey(errorKey);
validatable.error(error);
}
и вызывается в validate() на
error(validatable, "your-form.field.text-id");
Свойства ваш-form.field.text-id должен быть определен в YourPage.properties
Источники:
Создать собственный валидатор в Wicket и
Сообщения о проверке формы
Ответ 3
вы должны установить сообщение обратной связи на сеанс
message = "message";
Session.get().getFeedbackMessages().success(null, message);
Ответ 4
Вы можете использовать анонимный класс IValidationError и метод messageSource.getMessage для получения пользовательского сообщения из вашего файла свойств:
error(new IValidationError() {
@Override
public Serializable getErrorMessage(IErrorMessageSource messageSource) {
//create a list of the arguments that you will use in your message string
Map<String, Object> vars = new HashMap<String, Object>();
vars.put("invalidUsername", getInvalidUsernameInput());
//get the message string from the property file
return messageSource.getMessage("mysettings.invalid_username", vars);
}
});
Файл свойств образца:
mysettings.invalid_username=The user name "${invalidUsername}" is incorrect.