Java 来自数据库的验证程序消息的自定义wicket

Java 来自数据库的验证程序消息的自定义wicket,java,wicket,Java,Wicket,我有自己的wicket(1.5.x)自定义字符串加载器,它在appliance启动时加载,从数据库中的字典表中获取数据 现在,当我使用这个加载器时,尽管加载了默认的字符串加载器;在我的验证文本中,它不显示类似用户名/密码的${component}标签。它类似于“字段“”是必需的”,其中字段名保持为空。我怎样才能解决这个问题 我尝试了一种解决方案。以下是我的代码: 1) 在我的应用程序类中,我的字符串加载器如下所示: getResourceSettings().getStringResourc

我有自己的wicket(1.5.x)自定义字符串加载器,它在appliance启动时加载,从数据库中的字典表中获取数据

现在,当我使用这个加载器时,尽管加载了默认的字符串加载器;在我的验证文本中,它不显示类似用户名/密码的${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);
其中
新建StringResourceModel(“COMP:1:0”,this,null)
仅返回类似用户名的字符串。。。密码等

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

这是一个好方法吗?也可以用其他方式


谢谢。

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

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

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

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

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

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

Required=Field '${label}' is required.
${label}是实际标签(如果设置了标签)或字段ID(如果未设置标签)