在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查。集合的类型可以是java.util.Iterator,java.util.Collection
,java.util.Map或是一个数组。有三种方法可以定义这个集合:
&#61548; 使用运行时间表达式来返回一个属性集合的集合
&#61548; 将集合定义为bean,并且使用name属性指定存储属性的名称。
&#61548; 使用name属性定义一个bean,并且使用property属性定义一个返回集合的bean属性。
当前元素的集合会被定义为一个页作用域的bean。属性如下,所有这些属性都能使用运行时表达式。
属性 描述
collection 如果没有设置name属性,它就指定了要进行重复的集合
Id 页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄
indexed 页作用域JSP bean的名称,它包含着每次重复完成后集合的当前索引
Length 重复的最大次数
Name 作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合
Offset 重复开始位置的索引
property 作为集合的Bean属性的名称
Scope 如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域
Type 为当前定义的页作用域bean的类型
例如:
<logic:iterate id=”currentInt”
collection=”<% =myList %>”
type=”java.lang.Integer”
offset=”1”
length=”2”>
    <% =currentint %>
    </logic:iterate>
<logic:iterate id="SubForm" name="MainForm" property="beanlist">
<TR bgcolor="white">

<TD nowrap><bean:write name="SubForm" property="name"/></TD>

</TR>
</logic:iterate>
代码将从列表中的第一个元素开始重复两个元素并且能够让当前元素作为页作用域和java.lang.Integer类型的脚本变量来使用。也就是说,如果myList包含元素1,2,3,4等,代码将会打印1和2。

解决方案 »

  1.   

    看你和数据库交互用什么方法了,JDBC比较简单,直接从数据源获得Connection,至于传数据什么都行吧,我以前做在线考试系统的时候用的是Vector,而且那个时候因为对Struts标签用的不是很熟,所以还在往jsp中加Java代码的方式显示查询结果
      

  2.   

    我推荐Vector或Arraylist,Hashmap可能会有顺序的问题。<logic:iterate id="l" name="n" property="p">
      <logic:iterate id="l1" name="l">
           ....
      </logic:iterate>
    </logic:iterate>
      

  3.   

    比如说取题结果集有10道题,放到ArrayrList中,怎么才能有序,并且在JSP输出能够控制,比如:<logic:iterate id="studentshow" name="studentshow">
      <bean:write name="studentshow" property="studentName"/>
      。
      。
    </logic:iterate>我想要这样的效果,请问怎么写代码?
      

  4.   

    Arraylist,排序可以用SQL的ORDER BY 排序 或是ORDER(COLLECTION)做,建议用ORDER BY