我在appliation startup上加载了自己的wicket(1.5.x)自定义字符串加载器,它从我的数据库中的字典表中提取数据。
现在当我使用这个加载器时,尽管加载了默认的字符串加载器;在我的验证文本中,它没有显示$ {component}标签,如用户名/密码。它就像“字段''是必需的”,其中提交的名称仍为空。我怎么能解决这个问题?
我尝试了一种解决方案。这是我的代码:
1)我在Application类中加载了我的String loader:
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)
只返回一个字符串,如username ... password等。
现在,如果我检查我的页面,当我使用TextField.setLabel()实际上是用于验证器标签时,它会用我提供的文本替换验证器内容。但我这里没有使用$ {label}。
这是一个很好的方法吗?或者它可以用其他方式完成。
感谢。
答案 0 :(得分:0)
您可以发布'COMP:0:0'和'COMP:1:0'消息键的值吗?
默认情况下,你应该使用与wicket相同的语法:
Required=Field '${label}' is required.
$ {label}是实际标签(如果设置了一个)或字段ID(如果没有设置标签)。