Определить собственные сообщения обратной связи в Wicket - PullRequest
14 голосов
/ 21 апреля 2011

Как определить свои собственные сообщения обратной связи в Wicket? Например: если я укажу неверное имя пользователя, я хочу получить сообщение об ошибке типа «Неверное имя пользователя, попробуйте войти снова». вместо использования сообщения об ошибке по умолчанию.

Каким будет пример?

Ответы [ 4 ]

27 голосов
/ 21 апреля 2011

Вы можете отобразить свои собственные сообщения об ошибках, используя 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 голосов
/ 10 октября 2012

@ user1090145: Я использовал метод error () перегруженного компонента в классе Validator:

private void error(IValidatable<String> validatable, String errorKey) {
    ValidationError error = new ValidationError();
    error.addMessageKey(errorKey);
    validatable.error(error);
}

и вызвал его в validate () by

error(validatable, "your-form.field.text-id");

Свойства your-form.field.text-id должны быть определены в YourPage.properties

Источники: Создание пользовательскихВалидатор в Wicket и Форма сообщения проверки

1 голос
/ 04 июля 2014

Вы должны установить сообщение обратной связи в сеанс

message = "message";
Session.get().getFeedbackMessages().success(null, message);
0 голосов
/ 01 октября 2014

Вы можете использовать анонимный класс 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.
...