过去我为我的表单建了这样的标签:
<label wicket:for="name"><wicket:label><wicket:message key="name"></wicket:message></wicket:label>:</label><input wicket:id="name" type="text"/>
我还需要使用wicket:label
标签吗?我没有在wicket 7中使用wicket:label
,它似乎工作正常。我可能不了解使用wicket的目的:标签。似乎wicket:label
只是额外的标记。以下是我现在正在做的事情。这是对的吗?:
<label wicket:for="name"><wicket:message key="name"></wicket:message>:</label><input wicket:id="name" type="text"/>
相关
答案 0 :(得分:5)
查看AutoLabelResolver
和AutoLabelTextResolver
的JavaDoc。
<label wicket:for="name">
由AutoLabelResolver
处理。它通过在标签的HTML label
属性中填入正确的ID,将HTML input
标记链接到HTML表单组件(在您的情况下为for
标记)。它还为标签标记添加了css类,例如错误,因此如果出现错误,您可以在label标签中设置样式。
<wicket:label>
有两个目的。如果您通过key
属性(如您所做)或通过在标记之间添加一些文本来赋值,则将文本设置为Java FormComponent的标签模型,然后将其用于验证消息,如这个'${label}' is required.
(请参阅LabeledWebMarkupContainer#setLabel
和LabeledWebMarkupContainer#getLabel
)。
如果您没有为<wicket:label>
标记分配任何文字,那么它将用作输出。这意味着Java FormComponent的标签模型的值用于替换标记。
如果HTML标记中没有<wicket:label>
且Java代码中没有设置标签模型,则Java FormComponent将具有空标签模型,Wicket将回退为使用Wicket ID作为标签。因此,根据您的Wicket ID的外观,您将获得'user_name' is required.
等验证器消息,而不是'User name' is required.