Tip案例——foreach

来源:互联网 发布:淘宝动漫周边 编辑:程序博客网 时间:2024/06/05 04:11

foreach

<%

    Listlist=new ArrayList();

    list.add(”aaa”);

    list.add(”bbb”);

    list.add(”ccc”);

    list.add(”ddd”);

    request.setAttribute(”list”,list) ;

%>

Jsp

<c:foreachitems=”${list}” var=”str”>//str为迭代变量

${str}

</c:foreach>

 

TestForEach.jsp部分

   <%

    List list=new ArrayList();

    list.add("aaa");

    list.add("bbb");

    list.add("ccc");

    list.add("ddd");

    request.setAttribute("list",list) ;

%>

<c:foreach items="${list}"var="str">

${str}

</c:foreach>

<br/>-------------------------------------<br/>

<%Map map=new HashMap();

map.put("aa","张三");

map.put("bb","李四");

map.put("cc","王五");

map.put("dd","赵柳");

request.setAttribute("map",map);

 %>

 <c:foreach items="${map}"var="name">

 ${name}

 </c:foreach>

<br/>-------------------------------------<br/>

<%

//integer类型数组会自动封装

    Integer[] num={1,2,3,4,5};

    request.setAttribute("num",num);

 %>

  <c:foreach items="${num}"var="i">

 ${i}

 </c:foreach>

 <br/>-------------------------------------<br/>

 <%

    int[] arr={6,7,8,9,0};

    request.setAttribute("arr",arr);

  %>

   <c:foreach items="${arr}"var="index">

 ${index}

 </c:foreach>

 

  <br/>-------------------------------------<br/>

 <%

    String[]string={"qqq","www","eee"};

    request.setAttribute("string",string);

  %>

   <c:foreach items="${string}"var="string">

 ${string}

 </c:foreach>

 

ForEachTag.java部分:

packagecom.hbsi.tag;

 

importjava.io.IOException;

importjava.lang.reflect.Array;

importjava.util.ArrayList;

importjava.util.Collection;

importjava.util.Iterator;

importjava.util.Map;

 

importjavax.servlet.jsp.JspException;

importjavax.servlet.jsp.tagext.SimpleTagSupport;

 

public class ForEachTag extendsSimpleTagSupport {

 

       privateObject items;

       privateString var;

       publicvoid setItems(Object items) {

              this.items= items;

       }

       publicvoid setVar(String var) {

              this.var= var;

       }

       @Override

       publicvoid doTag() throws JspException, IOException {

              //TODO Auto-generated method stub

              //Listlist=(List)items;

              //返回迭代器

              //java.util.Iteratorit= list.iterator();

              //定义集合对象

              Collectioncollection=null;

             

              if(itemsinstanceof Map){//映射

                     Mapmap=(Map)items;

                     //两列集合转换成单列

                     collection=map.entrySet();

              }elseif(items instanceof Collection){//集合

                     collection=(Collection)items;

              }/*elseif(items instanceof Object[]){//数组

                     Object[]objs=(Object[])items;

                     collection=Arrays.asList(objs);     

              }elseif(items instanceof int[]){

                     //

              }*/

              //用反射机制判断数组

              elseif(items.getClass().isArray()){

                     collection=newArrayList();

                     intlength=Array.getLength(items);

                     for(inti=0;i<length;i++){

                            //获取到元素

                            //把元素放在collection对象中

                            collection.add(Array.get(items,i));

                           

                     }

              }

              //迭代器

              Iteratorit=collection.iterator();

             

              while(it.hasNext()){

                     Objectobj=it.next();

                     this.getJspContext().setAttribute(var,obj);

                     this.getJspBody().invoke(null);

              }

       }    

}

 

c.tld部分:

<tag>

  <name>foreach</name>

  <tag-class>com.hbsi.tag.ForEachTag</tag-class>

  <body-content>scriptless</body-content>

  <attribute>

   <name>items</name>

   <required>true</required>

   <rtexprvalue>true</rtexprvalue>

  </attribute>

 

    <attribute>

   <name>var</name>

   <required>true</required>

   <rtexprvalue>false</rtexprvalue>

  </attribute>

 </tag>

 

原创粉丝点击