为什么Spring MVC在路径中附加“1”来生成表单id:checkbox?

时间:2010-01-10 02:25:33

标签: jsp spring-mvc

如果我的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;

2 个答案:

答案 0 :(得分:8)

这是必要的,因为您可能需要将多个复选框绑定到同一个字段,并且每个复选框都需要具有唯一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"/>

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

答案 1 :(得分:5)

Donal是正确的,但如果您愿意,仍然可以在复选框上设置ID。

<label>
  <form:checkbox id="searchInSubject" path="searchInSubject"/>Subject
</label>

然后你可以按照你期望的方式使用javascript。

if( $('#searchInSubject').prop("checked") ) {
  alert('checked');
}