Welcome 微信登录

首页 / 软件开发 / JAVA / Struts源码研究 - logic-Iterator标签篇

Struts源码研究 - logic-Iterator标签篇2011-08-18logic:Iterator标签(以下简称“该标签”)是Struts里非常常用的一个标签,其作用在于循环显示给定容器对象中的值

如此常用的标签,其源代码当然需要拿出来研究一下,以下列举几条研究成果:

1、该标签内部使用Collection来表示给定的容器,所有的给定容器对象(如ArrayList,Map等)都会被其转化成为Collection

2、该标签自己维护循环索引

3、该标签常见的几个属性如下:

name、property、scope、id

4、结合以上标签,给出一段源代码来解释其工作的机理

这段源代码中,一开始就可以看到这样一句:

collection = TagUtils.getInstance().lookup(pageContext, name, property, scope);

这局代码在之前的几次Struts源码分析中已经分析到了,作用如下:

1、如果property的值为null,那么在scope定义的范围内(即request、session、application、page)查找以name变量值命名的对象(返回值是一个Object,然后转化Collection)

2、如果property的值不为null,那么做完1步骤的事情后,她将调用org.apache.commons.beanutils.PropertyUtils类中的getProperty方法,得到目标对象,转化成Collection类型所以,我们在编码时,可以自己构建一个ArrayList,然后放到session或request范围内,然后在logic:Iterator标签中可以这样定义:

name=对象在session或request中绑定的key值property可以不写(因为没有再将这个ArrayList包装进一个对象)