为什么Spring MVC会在路径后面附加一个“ 1”以生成form:checkbox的ID?


问题内容

如果我的jsp中有这样的复选框: <form:checkbox path="agreeToLegalAgreements" />

结果是: <input id="agreeToLegalAgreements1" name="agreeToLegalAgreements" type="checkbox" value="true"/><input type="hidden" name="_agreeToLegalAgreements" value="on"/>

为什么在ID后面附加一个“ 1”?我问的原因是因为如果要使用javascript选中此复选框,则必须对“ 1”进行硬编码:
document.getElementById('agreeToLegalAgreements1').checked=true;


问题答案:

这是必要的,因为您可能需要将多个复选框绑定到同一字段,并且每个复选框都需要具有唯一的ID。

例如,如果您的表单对象具有兴趣列表

Programming: <form:checkbox path="interests" value="Programming"/>
Painting: <form:checkbox path="interests" value="Painting"/>
Fishing: <form:checkbox path="interests" value="Fishing"/>

输出将是:

Programming: <input id="interests1" name="interests" type="checkbox" value="Programming"/>
Painting: <input id="interests2" name="interests" type="checkbox" value="Painting"/>
Fishing: <input id="interests3" name="interests" type="checkbox" value="Fishing"/>

(我省略了隐藏的空值输入)