一、forEach
var:从集合中取出的当前对象
items:将被forEach迭代的集合对象,可以是list、set等
varStatus:当前迭代的的状态信息集合。包括的属性有:
[quote]
current:当前这次迭代的(集合中的)项
index:当前这次迭代从0开始的迭代索引
count:当前这次迭代从1开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型
last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型
[/quote]
begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数
end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数
step:迭代的步长
代码举例:
二、choose
这是一个类型if...elseif else的表达。正好弥补了jstl没有if...else...的不足
三、输出map集合
1、结合forEach来使用
2、在知道key值的情况下可以这们来用:
如果是比较多且输出形式复杂的,可以用已知值做key,将复杂的数据封装到一个用户bean中。后台封装如下:
这样可以在页面中如下取值:
var:从集合中取出的当前对象
items:将被forEach迭代的集合对象,可以是list、set等
varStatus:当前迭代的的状态信息集合。包括的属性有:
[quote]
current:当前这次迭代的(集合中的)项
index:当前这次迭代从0开始的迭代索引
count:当前这次迭代从1开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型
last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型
[/quote]
begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数
end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数
step:迭代的步长
代码举例:
<c:forEach var="box" items="${levelList}" varStatus="status">
<c:if test="${status.first}">
<input type="checkbox" name="level" value="${box.value}" onclick="showSubLevels(this,'subLevel')" <c:if test="${fn:contains(checkedLevels,box.value) }">checked</c:if>/>${box.label}
<span id="subLevel" style="<%=levels.indexOf("00")!=-1?"":"none"%>">
(
</c:if>
<c:if test="${!status.first && !status.last}">
<input type="checkbox" name="level" value="${box.value }" <c:if test="${fn:contains(checkedLevels,box.value) }">checked</c:if>/>${box.label }
</c:if>
<c:if test="${status.last}">
)
</span>
<input type="checkbox" name="level" value="${box.value }" <c:if test="${box.value=='1' && fn:contains(checkedLevels,',1') }">checked</c:if>/>${box.label }
</c:if>
</c:forEach>
二、choose
这是一个类型if...elseif else的表达。正好弥补了jstl没有if...else...的不足
<c:choose>
<c:when test="${objname.atrrName=='value'}">
when标签在choose里可以有多个...
</c:when>
<c:otherwise>
是不是有点像"else"
</c:otherwise>
</c:choose>
三、输出map集合
1、结合forEach来使用
<c:forEach items="${map}" var="entry">
<c:out value="${entry.key}" />
<c:out value="${entry.value}" />
</c:forEach>
2、在知道key值的情况下可以这们来用:
${map[keyvalue]}
如果是比较多且输出形式复杂的,可以用已知值做key,将复杂的数据封装到一个用户bean中。后台封装如下:
Object bean1 = new Object(pro1,pro2);
Object bean2 = new Object(pro1,pro2);
map.put("key1",bean1);
map.put("key2",bean2)
...
这样可以在页面中如下取值:
${map['key1'].pro1} //取出bean1,并输出其属性pro1的值
${map['key2'].pro2} //取出bean2,并输出其属性pro2的值