logic:iterate
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:

使用一个运行时表达式,这个表达式的值是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。
上面所提到的集合可以是:

对象类型或原子类型的数组(Array)。
java.util.Collection的实现,包括ArrayList,Vector。
java.util.Enumeration的实现。
java.util.Iterator的实现。
java.util.Map的实现,包括HashMap,Hashtable和TreeMap。
如果您叠代的集合中含有null的值,这时需要采取一定的措施,因为这时logic:iterate不会在page作用域中创建对象。一般是使用<logic:present>标签或<logic:notPresent>标签来判断一下。

下面是logic:iterate叠代ArrayList的示例的对象引用关系和部分代码

图中的persons列表是在ListAction中填充的,在这里只是简单的加入了三个Person对象,在实际的应用中这些数据应该取自数据库。具体的代码如下:

public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request, HttpServletResponse response) {

  ListForm listForm = (ListForm) form;
 
  List<Person> persons = new ArrayList<Person>();
 
  Person person1 = new Person();
  person1.setId("00001");
  person1.setName("赵辰");
 
  Person person2 = new Person();
  person2.setId("00002");
  person2.setName("李为芳");
 
  Person person3 = new Person();
  person3.setId("00003");
  person3.setName("王微");
 
  persons.add(person1);
  persons.add(person2);
  persons.add(person3);
 
  listForm.setPersons(persons);
 
  return mapping.findForward("success");
}

标签输出的结果为:

00001-->赵辰
00002-->李为芳
00003-->王微
 

 

黑色头发  http://heisetoufa.iteye.com