来自数据库的验证器消息的自定义检票口

发布于 2024-11-17 00:02:34 字数 1506 浏览 1 评论 0原文

我有自己的 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);

wherenew StringResourceModel("COMP:1:0", this, null) 仅返回类似 username ...password 的字符串现在

,如果我检查我的页面,当我使用 TextField.setLabel() (实际上用于验证器标签)时,它会用我提供的文本替换验证器内容。但我在这里没有使用 ${label} 。

这是一个好方法吗?或者可以用其他方式完成。

谢谢。

I have my own wicket(1.5.x) Custom String loader loaded on appliation startup which fetches data from a dictionary table in my database.

Now when I use this loader despite of loading of default string loader;in my validation text, it does not show the ${component} label like username/password. It comes like "the field '' is required" where the filed name remains empty. How could I fix this?

I have tried one solution.Here are my codes:

1) I have loader my String loader like this in my Application class:

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

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

here DictionaryLoader is just an implementation of IStringResourceLoader.

2) In my login form I have added my username and password field like this:

    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) just returns a string like username ... password etc.

Now if I check my page it replaces the validator content with my provided text when I use TextField.setLabel() which in fact is for validator label. But I am not using ${label} here.

Is this a good way to do that? Or it can be done in other way.

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美人迟暮 2024-11-24 00:02:34

您可以发布“COMP:0:0”和“COMP:1:0”消息键的值吗?

您应该使用与 wicket 默认情况下相同的语法:

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

${label} 是实际标签(如果您设置了标签)或字段 ID(如果您没有设置标签)。

Can you post the values for 'COMP:0:0' and 'COMP:1:0' message keys?

You should use the same syntax as wicket does by default:

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

${label} is either an actual label (if you set one) or field ID (if you didn't set the label).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文