wicket:wicket需要标签:for?

Jer*_*edM 4 wicket

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

<label wicket:for="name"><wicket:label><wicket:message key="name"></wicket:message></wicket:label>:</label><input wicket:id="name" type="text"/>
Run Code Online (Sandbox Code Playgroud)

我还需要使用wicket:label标签吗?我没有wicket:label在wicket 7中使用它似乎工作正常.我可能不了解使用wicket的目的:标签.这似乎wicket:label只是额外的标记.以下是我现在正在做的事情.它是否正确?:

<label wicket:for="name"><wicket:message key="name"></wicket:message>:</label><input wicket:id="name" type="text"/>
Run Code Online (Sandbox Code Playgroud)

此示例与Wicket XHTML标记相关

Tek*_*kki 5

看一看的JavaDoc的AutoLabelResolverAutoLabelTextResolver.

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

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

如果没有为<wicket:label>标记分配任何文本,则将其用作输出.这意味着Java FormComponent的标签模型的值用于替换标记.

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