Персонализиран уикет от валидатор съобщение от база данни

Имам собствен wicket(1.5.x) Custom String loader, зареден при стартиране на приложение, който извлича данни от речникова таблица в моята база данни.

Сега, когато използвам този зареждащ механизъм въпреки зареждането на зареждащия низ по подразбиране; в моя текст за проверка той не показва етикета ${component} като потребителско име/парола. Идва като "полето '' е задължително", където името на файла остава празно. Как мога да поправя това?

Опитах едно решение. Ето моите кодове:

1) Имам зареждане на моето зареждане на низове като това в моя клас Application:

  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);

wherenew StringResourceModel("COMP:1:0", this, null) просто връща низ като потребителско име ... парола и т.н.

Сега, ако проверя страницата си, тя заменя съдържанието на валидатора с предоставен от мен текст, когато използвам TextField.setLabel(), което всъщност е за етикет на валидатора. Но не използвам ${label} тук.

Това добър начин ли е да направите това? Или може да се направи по друг начин.

Благодаря.


person Shahriar    schedule 23.06.2011    source източник


Отговори (1)


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

Трябва да използвате същия синтаксис като wicket по подразбиране:

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

${label} е или действителен етикет (ако сте задали такъв) или идентификатор на поле (ако не сте задали етикета).

person lgawron    schedule 05.09.2011