JSP-JSTL

来源:互联网 发布:mac升级显卡 编辑:程序博客网 时间:2024/06/03 19:34

【1】c:foreach

<c:forEach>标签用于通用数据循环,它有以下属性

|属 性 ——- |描 述——————–|是否必须———–|缺省值

items ——-进行循环的项目 ———-否——————–无
begin ——–开始条件——————否—————— 0
end ———-结束条件 ——————否———-集合中的最后一个项目
step ———–步长———————-否 ———————-1
var —–代表当前项目的变量名 ——–否——————–无
varStatus –显示循环状态的变量 ——-否 ——————–无

<c:forEach>标签的items属性支持Java平台所提供的所有标准集合类型。

此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:

java.util.Collection:调用iterator()来获得的元素。java.util.Map:通过java.util.Map.Entry所获得的实例。java.util.Iterator:迭代器元素。java.util.Enumeration:枚举元素。Object实例数组:数组元素。基本类型值数组:经过包装的数组元素。用逗号定界的String:分割后的子字符串。javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。

不论是对整数还是对集合进行迭代,<c:forEach>的varStatus属性所起的作用相同。
和var属性一样,varStatus用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。
不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。
该类包含了一系列的特性,它们描述了迭代的当前状态,如下这些属性的含义如下所示:

current:当前这次迭代的(集合中的)项。index:当前这次迭代从0开始的迭代索引。count:当前这次迭代从1开始的迭代计数。first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。beginbegin属性的值。endend属性的值stepstep属性的值
    • 遍历输出表格:
    <%        List<Customer> custs2 = new ArrayList<Customer>();        custs2.add(new Customer(1,"AAA",11));//index:0        //custs2.add(new Customer(2,"AAA",11));//index:0        request.setAttribute("custs2",custs2);     %>     <!-- 遍历数据 collection -->     <table border="1">     <c:forEach items="${requestScope.custs2}" var="cust"  varStatus="status">        <tr>            <td>${cust.id}</td>            <td>${cust.name}</td>            <td>${cust.age}</td>            <td>${status.index}</td>            <td>${status.count}</td>            <td>${cust.id}</td>            <td>${cust.id}</td>        </tr>     </c:forEach>     </table>
    • 子元素为radio时:

后台是根据标签的name属性获取标签值,当遍历时,应保证每次循环的name属性不同!

 <%    request.setCharacterEncoding("UTF-8");    List<Customer> custs = new ArrayList<Customer>();    custs.add(new Customer(1,"AAA",11));//index:0    custs.add(new Customer(2,"BBB",12));    custs.add(new Customer(3,"CCC",13));    custs.add(new Customer(4,"DDD",14));    request.setAttribute("custs",custs);   %>    <form action="testServlet1" method="post">        <br><br>        <c:forEach items="${custs}" var="cust" varStatus="status">        <input type="radio" name="cust${cust.id}" value="${cust.name}"/> ${cust.name}        <input type="radio" name="cust${cust.id}" value="${cust.id}"/> ${cust.id}        <input type="radio" name="cust${cust.id}" value="${cust.age}"/> ${cust.age}        <br/><br/>        </c:forEach>        <br><br>        <input type="submit" value="Submit">    </form>

这里写图片描述

0 0