wicket:for 需要 wicket:label 吗?

Is wicket:label needed with wicket:for?

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

<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:label 的目的。似乎 wicket:label 只是附加标记。下面是我现在正在做的。这是正确的吗?:

<label wicket:for="name"><wicket:message key="name"></wicket:message>:</label><input wicket:id="name" type="text"/>

这个例子与Wicket XHTML tags

有关

查看 AutoLabelResolverAutoLabelTextResolver 的 Java文档。

<label wicket:for="name">AutoLabelResolver 处理。它通过在 HTML for 标签的属性。它还将 css 类 添加到 label 标记中,例如错误,因此您可以在出现错误时设置 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.

这样看起来不错的消息