Определить собственные сообщения обратной связи в 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.