【发布时间】:2016-06-22 15:39:49
【问题描述】:
我尝试创建一个使用表单和标签的 WicketApplication。
我使用 Wicket 7.3.0,从码头的 maven-quickstart 运行。
我希望反馈消息使用 label 内容,但现在它使用字段名称。我记得在过去的某个时候看到过这个工作,但现在似乎不起作用。也许我依靠一个边缘案例。无论如何,我的问题是这是否是“正确”的方式,或者如果不是,我应该采取不同的做法。
这是我的(测试用例)代码:
HTML
<body>
<div wicket:id="fp"></div>
<form wicket:id="f">
<table>
<tr><td><label wicket:for="naam"><wicket:message key="Naam"></wicket:message></label></td><td><input wicket:id="naam" /></td></tr>
<tr><td><label wicket:for="adres"><wicket:message key="Adres"></wicket:message></label></td><td><input wicket:id="adres" /></td></tr>
<tr><td><label wicket:for="woonplaats"><wicket:message key="Woonplaats"></wicket:message></label></td><td><input wicket:id="woonplaats"/></td></tr>
</table>
<a wicket:id="save">Save!</a>
</form>
</body>
Java
public HomePage(final PageParameters parameters) {
super(parameters);
final FeedbackPanel fp = new FeedbackPanel("fp");
fp.setOutputMarkupId(true);
this.add(fp);
Form f = new Form<Void>("f") {
};
f.setOutputMarkupId(true);
f.add(new TextField("naam", Model.of("Rob")).setRequired(true));
f.add(new TextField("adres", Model.of("Fantasieweg 4")));
f.add(new TextField("woonplaats", Model.of("Babbelerdam")).setRequired(true));
// TODO Add your page's components here
f.add(new AjaxSubmitLink("save", f) {
@Override
protected void onAfterSubmit(AjaxRequestTarget target, Form<?> form) {
target.add(fp);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
// TODO Auto-generated method stub
target.add(fp);
}
});
this.add(f);
}
WicketApplication.properties
Required=Veld ${label} is verplicht
Naam=PropertyNaam
Adres=PropertyAdres
Woonplaats=PropertyWoonplaats
【问题讨论】:
-
不应该 Naam=PropertyNaam 是 naam=PropertyNaam(注意键的第一个小写字符)?
-
@svenmeier 不确定是否需要。生成的 HTML 在标签中有翻译后的值,所以我认为没问题。
-
翻译后的值显示在标签中,因为您在那里使用“Naam”(大写):P。
-
嗯,好的。我假设使用标签构造以某种方式使关联 FormComponent 的 getLabel() 返回翻译后的值。猜我错了:)
标签: java properties internationalization wicket