今天遇到个关于Jstl 的<c:foreach></c:foreach>标签的使用问题,本来是想要通过jstl实现 从集合的第二个元素遍历数据,
常规的做法应该是这样,也比较易与理解,默认从下标为0 开始遍历 ,begin属性 表示遍历开始的下标位置,要从第二位开始,自然要设为 1,效果实现,代码及 效果如下图
<select class="form-control select-opt" id="a_company">
<option value="0">请选择...</option>
<c:forEach begin="1" items="${companys }" var="com">
<option>${com.comName }</option>
</c:forEach>
</select>
测试数据中,一共有五个数据,从第二个元素开始遍历,OK,效果实现。此外在网上看到另外一种写法,还不是很理解
<select class="form-control select-opt" id="a_company">
<option value="0">请选择...</option>
<c:forEach begin="1" end="${companys.size() - 1 }" var="i">
<option>${companys[i].comName }</option>
</c:forEach>
</select>
此段代码同样实现了 上图的效果(从第二个元素开始遍历),个人是这么理解的,
var 通常情况下声明 的是被遍历的集合,相当于取了别名,而这段代码 没有items属性存在,
所有这个var声明的是元素下标,相当于:
for(var i = 1 , 0< i < list.size() , i++){
<option>${ list [i] }.name</option>
}
小弟初入开发,如有理解不当,望各位能够指出