Tip案例——foreach

來源:互聯網
上載者:User

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>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.