Пользовательская калитка из сообщения валидатора из базы данных - PullRequest
2 голосов
/ 23 июня 2011

У меня есть свой собственный загрузчик Wicket (1.5.x), загружаемый при запуске приложения, который извлекает данные из таблицы словаря в моей базе данных.

Теперь, когда я использую этот загрузчик, несмотря на загрузку загрузчика строк по умолчанию; в моем тексте проверки он не показывает метку $ {component}, такую ​​как имя пользователя / пароль.Это происходит как «поле», обязательное для заполнения, когда имя поля остается пустым.Как я могу это исправить?

Я попробовал одно решение. Вот мои коды:

1) У меня есть загрузчик моего загрузчика строк, как это в моем классе приложения:

  getResourceSettings().getStringResourceLoaders().add(0,
            new ClassStringResourceLoader(MyApplication.class));

    getResourceSettings().getStringResourceLoaders()
       .add(1, new DictionaryLoader((IDicitureService)
        applicationContext.getBean(IDicitureService.class)));

здесь DictionaryLoader это просто реализация IStringResourceLoader.

2) В форме входа в систему я добавил свое имя пользователя и поле пароля, например:

    final FeedbackPanel feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);
    form.add(feedback);
    form.add(new FormComponentFeedbackBorder("username_border")
            .add(new RequiredTextField("username",String.class)
                    .setLabel(new StringResourceModel("COMP:0:0", this, null))));
    form.add(new FormComponentFeedbackBorder("password_border").
            add(new PasswordTextField("password")
                    .setLabel(new StringResourceModel("COMP:1:0", this, null))));
    add(form);

где new StringResourceModel("COMP:1:0", this, null) просто возвращает строку, такую ​​как имя пользователя ... пароль и т. Д.

Теперь, если я проверяю свою страницу, она заменяет содержимое валидатора на предоставленный мной текст, когда я использую TextField.setLabel (), который фактически предназначен для метки валидатора,Но я здесь не использую $ {label}.

Это хороший способ сделать это?Или это можно сделать другим способом.

спасибо.

1 Ответ

0 голосов
/ 05 сентября 2011

Можно ли опубликовать значения для ключей сообщений «COMP: 0: 0» и «COMP: 1: 0»?

Вы должны использовать тот же синтаксис, что и у wicket по умолчанию:

Required=Field '${label}' is required.

$ {label} - это либо фактическая метка (если вы ее установили), либо идентификатор поля (если вы не установили метку).

...