在c:if内声明一个变量,其他方法中可以直接调用
<c:forEach>中item对应迭代器名称,意思是说一个list方到这里会在这个循环内依次获取这个list中每个元素的值,valStatus指该
例子:
<c:if test="${pageBean.inDate.wantWarehouse !=null}" var="testwantWarehouse">
<c:forEach var="sbss" items="${pageBean.data}" varStatus="lll">
${sbss.product_id}
<c:if test="${testwantWarehouse==true}">
${sbss.warehouse_id}</
</c:if>
</c:forEach>
以下转自https://blog.csdn.net/hu_xuefeng/article/details/51494250
我们常使用<c:forEach>标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。varStatus属性常用参数如下:
current:当前这次迭代的(集合中的)项index:当前这次迭代从 0 开始的迭代计数
count:当前这次迭代从 1 开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false
last:用来表明当前这轮迭代是否为最后一次迭代的标志, 返回true/false
示例:代码段1:
- <span style="font-size:18px;"><span style="font-size:14px;"><!-- jstl核心标签库中的标签c:forEach -->
- <c:forEach items="${list}" var="s" varStatus="abc">
- <div id="div1">
- ${abc.current}
- <ul>
- <li>学号:${s.id}</li>
- <li>姓名:${s.name}</li>
- <li>年龄:${s.age}</li>
- <li>性别:${s.sex}</li>
- </ul>
- </div>
- </c:forEach></span>
- <span style="font-size:18px;"></span></span>
在另一页面中设置了传递的参数list为request.setAttribute("list", students);
其中students为ArrayList<Students>类型,students中包含了5组数据,格式如下所示,id分别为1~5.
代码段2:
- <span style="font-size:18px;"> <student id="1">
- <name>李一X</name>
- <sex>男</sex>
- <age>20</age>
- </student></span>
1)当代码段1中为${abc.current}时,显示界面为(注意最上面一行变化,后面类同):
2)当代码段1中为${abc.index}时,显示界面为(注意最上面一行变化,后面类同):
3)当代码段1中为${abc.count}时,显示界面为(注意最上面一行变化,后面类同):
4)当代码段1中为${abc.first}时,显示界面为(注意最上面一行变化,后面类同):
5)当代码段1中为${abc.last}时,显示界面为(注意最上面一行变化,后面类同):
另外可以结合<c:forEach>标签的begin、end、step属性控制输出,其分别表示:起始序号,结束序号,跳跃步伐。
- <c:forEach items="${list}" var="s" begin='0' end='4' step='2' varStatus="abc">
- <div id="div1">
- ${abc.count}
- <ul>
- <li>学号:${s.id}</li>
- <li>姓名:${s.name}</li>
- <li>年龄:${s.age}</li>
- <li>性别:${s.sex}</li>
- </ul>
- </div>
- </c:forEach>
说明:操作list集合共有5条数据,step="2"表明不是逐条循环,而是按步长为2取值。即操作集合中的第1、3、5条数据(见学号),此处不要和左上角varStatus属性(取值count)的输出混淆.