在Struts标签中对数据的几种遍历

在Struts中我们对有些标签的使用还不是怎么了解。我是不怎么了解的,尤其是在数据的遍历方面,有时候真的不知道那是为什么会那样,它代表的是什么意思。有时真的把人搞得很郁闷。

      特此。在这里总结哈,让那些和我一样郁闷的人来清醒哈。在Struts中的数据遍历。它有对集合,Map,还有就是在HashMap中的每个元素的Value是集合对象遍历。接下来我们一起看看它是怎么遍历的。
      第一种:在Struts标签中对集合的遍历。它比较简单,看它的代码实现。如下:
      <%      Vector vector = new Vector();
      //这是给Vector中添加数据

vector.addElement("Dog");

vector.addElement("Cat");

      vector.addElement("Bird");
      //这是把Vector中的数据放到Request范围中

request.setAttribute("Animals",vector);

     %>
     //它在遍历Vector中的每个元素时,每检索到一个元素,就
     //把它命名为"element",并且把存放在 Pag范围中。     <logic:iterate id="element" name="Animals">
       //这是它嵌套的标签,用于输出每个元素的内容。

<bean:writename="element"/>

     </logic:iterate>
 
       //这里特别要解释三个属性,indexId属性定义了一个代表
      //当前遍历的元素的序列号,它存放在 pag 范围中。 
      //offset属性指定开始遍历元素的起始位置,默认值为
      //“0”,Length属性就是要遍历集合中的多少个元素。
      <logic:iterate id="element" name="Animals"
         indexid="index" offset="1" length="2">

<bean:writename="index"/>

<bean:writename="element"/>

      </logic:iterate> 
      第二种:在Struts标签中对Map的遍历。实现代码如下:
       <%          HashMap map = new HashMap();
          //给HashMap中以键值的方式添加数据

map.put("Jan","January");

map.put("Feb","February");

          map.put("Mar","March");
          //这里也是把HashMap中的数据放到Request范围中

request.setAttribute("months",map);

%>

         <logic:iterate id="element" name="months"
             indexid="index">
             //这里输出的是它的系列号,键,值

<bean:writename="index"/>

<bean:writename="element"property="key"/>

<bean:writename="element"property="value"/>

         </logic:iterate>
       第三种:在Struts标签中对HashMap中的Value值是集合对象的遍历。这里用到了嵌套的<logic:iterate>标签。来看它的代码实现。如下:
        <%            HashMap hm = new HashMap();
            //这里定义了几个集合对象

Stringvegetables[]={"pepper","cucumber"};

Stringfruits[]={"apple","orange","banana"};

Stringflowers[]={"rose","chrysanthemum"};

            String trees[] = {"willow"};
            //把上面定义的集合对象放到HashMap中。

hm.put("Vegetables",vegetables);

hm.put("Fruits",fruits);

hm.put("Flowers",flowers);

            hm.put("Trees",trees);
            //这里也和上面的一样,把它放在Request范围中
            request.setAttribute("catalog",hm);

%>

       <logic:iterate id="element" indexid="index"
          name="catalog">
                //这里输出的是系列号,键

<bean:writename="index"/>

               <bean:write name="element" property="key"/><br>
         //这里的Length,offset 属性请看上面的解释        <logic:iterate id="elementValue" name="element"
          property="value" length="3" offset="1">
                //这里输出值

<bean:writename="elementValue"/><br>

</logic:iterate>

         </logic:iterate>
       第四:说到着,我就顺便把在遍历的时候怎么设置变量说一哈。
       1>设置name属性,name属性指定需要遍历的集合和Map。如下:
          <logic:iterate id="element"name="要遍历的集合和
         Map"> 

<bean:writename="element"/>

        </logic:iterate>
        2>设置name属性和property属性,name属性可以指定一个JavaBean,property属性指定JavaBean的一个属性,这个属性是需要遍历的集合和Map。如下:
        <logic:iterate id="element"name="JavaBean"
         property="JavaBean的属性"> 
          //这里输出指定的属性

<bean:writename="element"/>

        </logic:iterate>
        3>设置collection属性,collection属性可以指定一个运行时表达式。表达式的运算结果为需要遍历的集合和Map。如下:
         //这里需要注意的是在得数据的时候,要看它在那个存
        //储范围内,下面就是在request范围中取数据。
        <logic:iterate id="element" collection="<%request.getHeaderNames()%>"> 
          //这里输出得到的值

<bean:writename="element"/>

</logic:iterate>

相关推荐