来自数据库的验证器消息的自定义检票口
我有自己的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以发布“COMP:0:0”和“COMP:1:0”消息键的值吗?
您应该使用与 wicket 默认情况下相同的语法:
${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:
${label} is either an actual label (if you set one) or field ID (if you didn't set the label).