我有以下Struts2代码,它生成一个托运人列表。它仅在用户选择发货类型后显示(JavaScript删除了consola.println(i.toString());
类)。
public class Route {
private int start;
private arrayList<Stop>stops=new arrayList <Stop>();
public Route(int start) {
this.start = start;
}
public void addStop( Stop s ){
stops.add(s);
}
public ArrayList <Stop> getStops(){
return stops;
}
Struts2代码生成以下HTML,其中每个“删除发件人信息:”标签与每个hidden
元素相关联的ID(<div class ="showIfNotOther hidden">
<div class="row">
<div class="col-xs-12 rowsecthead" id="shipperInfoHeader"><s:text name="shipperInfo"/></div>
</div>
<s:iterator value="chosenShipperViewList" status="status">
<div class="row small-line-height">
<div class="col-sm-2 col-xs-12 "><label for='<s:property value="%{'deleteShipper'+#status.index}" />' class="pull-right"><s:text name="deleteShipperInfo"></s:text>:</label></div>
<div class="col-sm-3 col-xs-12 text-left">
<s:url var="deleteLink" action="shipment_deleteShipperFromChosenShipperViewList"></s:url>
<s:a id="%{'deleteShipper'+#status.index}" href="%{deleteLink}"> <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" ></s:a>
</div>
<hr>
</div>
</s:iterator>
,<a>
等)是我理解的内容必须是508 compliant。
deleteShipper0
当我将HTML放入W3C Markup Validation Service时,我收到了错误
label元素的
deleteShipper1
属性必须引用非隐藏的表单控件。
HTML是否真的不合规(如果不是,我该如何解决),或者这只是 W3C标记验证服务中的错误?
答案 0 :(得分:4)
由label
的{{3}}定义:
label元素表示表单控件的标题。
您当前正在为链接使用label
标记,而不是表单控件,这是您的第一个错误。
是的,这是对的:
label元素的
for
属性必须引用非隐藏的表单控件。
使用屏幕阅读器导航时,您必须能够从标签转到表单控件。但在您的情况下,似乎您的标签和未来的表单控件(一旦您将表单控件替换为链接)将在同一个隐藏的div
中。所以你不必关心这样的评论。
但我认为使用表单控件将从W3验证器中删除此注释,因为它不处理CSS。