wicket:wicket需要标签:for?

时间:2015-09-14 21:42:27

标签: wicket

过去我为我的表单建了这样的标签:

<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"/>

此示例与Wicket XHTML tags

相关

1 个答案:

答案 0 :(得分:5)

查看AutoLabelResolverAutoLabelTextResolver的JavaDoc。

<label wicket:for="name">AutoLabelResolver处理。它通过在标签的HTML label属性中填入正确的ID,将HTML input标记链接到HTML表单组件(在您的情况下为for标记)。它还为标签标记添加了css类,例如错误,因此如果出现错误,您可以在label标签中设置样式。

<wicket:label>有两个目的。如果您通过key属性(如您所做)或通过在标记之间添加一些文本来赋值,则将文本设置为Java FormComponent的标签模型,然后将其用于验证消息,如这个'${label}' is required.(请参阅LabeledWebMarkupContainer#setLabelLabeledWebMarkupContainer#getLabel)。

如果您没有为<wicket:label>标记分配任何文字,那么它将用作输出。这意味着Java FormComponent的标签模型的值用于替换标记。

如果HTML标记中没有<wicket:label>且Java代码中没有设置标签模型,则Java FormComponent将具有空标签模型,Wicket将回退为使用Wicket ID作为标签。因此,根据您的Wicket ID的外观,您将获得'user_name' is required.等验证器消息,而不是'User name' is required.