迭代标签 迭代标签包括以下几种。 :用于遍历集合中的对象,并且能重复执行标签主体。 :用于遍历字符串中用特定分隔符分隔的子字符串,并且能重复执行标签主体。 15.5.1 标签(1) 标签用于遍历集合中的对象,并且能重复执行标签主体,它和本书第13章的13.4节(创建和使用iterate标签)介绍的标签的作用有些相似。 1.基本语法 标签的基本语法为: 1. 2.标签主体 3. 标签每次从集合中取出一个元素,并且把它存放在NESTED范围内的命名变量中,在标签主体中可以访问这个命名变量。NESTED范围是指当前标签主体构成的范围,只有当前标签主体才能够访问NESTED范围内的命名变量。 例如以下代码先创建了一个names集合,然后通过标签遍历这个集合,并打印集合中的所有元素: 1. 2. 8. 9. ${name} 10. 运行以上代码,得到的打印结果为"Tom Mike Linda"。以上标签等价于以下Java程序片段: 1. 2. 9. 10. 14. 15. 以上第一个和第三个Java程序片段完成标签的任务,即在每一次循环中,先从names集合中取出一个元素,把它作为name命名变量存放在页面范围内,接着执行标签主体,然后从页面范围内删除name命名变量,从而确保只有当前标签主体才能访问name命名变量。因此尽管在实现上,name命名变量位于页面范围,但是在逻辑上,name命名变量属于NESTED范围。 以上第二个Java程序片段完成标签主体的任务,即从页面范围内读取name命名变量,并输出它的值。 2.标签的varStatus属性 标签的varStatus属性用于设定一个javax.servlet.jsp.jstl.core. LoopTagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。 count:当前元素在集合中的序号,从1开始计数。 index:当前元素在集合中的索引,从0开始计数。 first:当前元素是否是集合中的第一个元素。 last:当前元素是否是集合中的最后一个元素。 例程15-2的namelist.jsp中的标签就使用了varStatus属性。 例程15-2 namelist.jsp 1. 2. 3. 4. 5. 11. 12.
13.
14.
15.
16.
17.
18.
19.
20. 21. 22. 39.
23.
24.
25.
26.
27.
28. 29. 30. ${name} 31. 32. 33. ${name} 34. 35. 36. |
37.
38.