<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yunye 的 JavaBlog

    @see codemouse

    統(tǒng)計(jì)

    留言簿(1)

    閱讀排行榜

    評(píng)論排行榜

    logic:iterate(2)

    <logic:iterate> 是Logic 標(biāo)簽庫(kù)中最復(fù)雜的標(biāo)簽,也是用途最廣的一個(gè)標(biāo)簽,它能夠在一個(gè)循環(huán)中遍歷數(shù)組、Collection、Enumeration、Iterator 或 Map 中的所有元素。

    1. 遍歷集合
      <logic:iterate> 的 name 屬性指定需要進(jìn)行遍歷的集合對(duì)象, 它每次從集合中檢索出一個(gè)元素, 然后把它放在page 范圍內(nèi), 并以id 屬性指定的字符串來(lái)命名這個(gè)元素, 例如:
        <%
            Vector animals = new Vector();

            animals.addElement("Dog");
            animals.addElement("Cat");
            animals.addElement("Bird");
            animals.addElement("Chick");

            request.setAttribute("Animals", animals);
        %>
        <logic:iterate id="element" name="Animals">
            <bean:write name="element"/><br>
        </logic:iterate>
        以上代碼先定義了一個(gè)Vector 類型的集合變量 Animals, 它存放在request 范圍內(nèi). 接下來(lái)<logic:iterate> 標(biāo)簽在一個(gè)循環(huán)中遍歷Animals 集合(這個(gè)集合名就是在標(biāo)簽中的name 屬性的值)中所有元素, 每次檢索到一個(gè)元素, 就把它命名為"element"(標(biāo)簽id 屬性的值), 并存放在page 范圍內(nèi).
        在<logic:iterate> 中, 還嵌套了一個(gè)<bean:write>標(biāo)簽, 它用于輸出每個(gè)元素的內(nèi)容. 以上代碼的輸出內(nèi)容如下:
        Dog
        Cat
        Bird
        Chick    
         length    屬性指定需要遍歷的元素的數(shù)目, 如果沒(méi)有設(shè)置length 屬性,就遍歷集合中的所有元素.
        offset      屬性指定開(kāi)始遍歷的起始位置, 默認(rèn)值為 "0" , 表示從集合的第一個(gè)元素開(kāi)始遍歷.
        indexId  屬性定義一個(gè)代表當(dāng)前遍歷元素序號(hào)的變量, 這個(gè)變量被存放在 page 范圍內(nèi), 可以被標(biāo)簽主體的
    <bean:write> 標(biāo)簽訪問(wèn). 例如:

        <logic:iterate 
                id="element"           // 指定輸出元素的名 與 <bean:write> 中name 屬性一致
                indexId="index"       // 遍歷元素序號(hào)的變量, 這個(gè)變量放在page 范圍內(nèi)
                name="Animals"    // request 中的集合名, 從中取循環(huán)取出元素
                offset="1"                 // 從集合的第 2 條記錄開(kāi)始取數(shù)
                length="2">             // 取出 2 個(gè)元素
            <bean:write name="index"/>.              // 輸出每個(gè)元素的序號(hào), 與indexId 的屬性一致
            <bean:write name="element"/><br>  // 輸出每個(gè)元素的內(nèi)容, 與id 的屬性一致
        </logic:iterate>

    2. 遍歷Map
        <logic:iterate> 標(biāo)簽還可以遍歷HashMap 中的元素,

    例如:
        <%
            HashMap months = new HashMap();
           
            months.put("Jan","January");
            months.put("Feb","February");
            months.put("Mar","March");
           
            request.setAttribute("month", months);
        %>
        <logic:iterate id="element" indexId="ind" name="months">
            <bean:write name="ind"/>.                                          // 序號(hào)
            <bean:write name="element" property="key"/>:      // 鍵名
            <bean:write name="element" property="value"/>    // 鍵值
        </logic:iterate>
        以上代碼先定義一個(gè)名為"months" 的HashMap, 存放在request 范圍內(nèi). 接下來(lái)在<logic:iterate> 標(biāo)簽遍歷months 對(duì)象的每一個(gè)元素, 每一個(gè)元素包含一對(duì) key/value . 在<logic:iterate> 標(biāo)簽主體中包含三個(gè)<bean:write> 標(biāo)簽, 分別輸出每個(gè)元素的序號(hào)、key 和 value. 以上代碼的輸出內(nèi)容如下:
        0.Mar: March
        1.Feb: February
        2.Jan: January
        如果HashMap 中的每個(gè)元素的 value 是集合對(duì)象,

    則可以采用嵌套的<logic:iterate>標(biāo)簽遍歷集合中的所有對(duì)象, 例如:
        <%
               HashMap h = new HashMap();
               String vegetables[] = {"pepper","cucumber"};
               String fruits[] = {"apple","orange","banana","cherry","watermelon"};
               String flowers[] = {"chrysanthemum","rose"};
               String trees[] = {"willow"};
              
               h.put("Vegetables", vegetables);
               h.put("Fruits",fruits);
               h.put("Flowers",flowers);
               h.put("Trees",trees);
              
               request.setAttribute("catalog",h);
        %>
        <logic:iterate   id="element"              // 與<bean:write> 中的name 屬性對(duì)應(yīng), 輸出內(nèi)容
                                  indexId="ind"              // 與<bean:write> 中的name 屬性對(duì)應(yīng), 輸出序號(hào)
                      &nbsp;           name="catelog">      // 指定輸出元素的名稱
            <bean:write name="ind"/>.           // 輸出序號(hào)
            <bean:write name="element"      // 與<logic:iterate>中id 屬性對(duì)應(yīng)
      property="key"/>    // 集合中的鍵名

            <logic:iterate
                    id="elementValue"   // 與<bean:write> 中的name 屬性對(duì)應(yīng)
                    name="element"      // 指定輸出元素的名稱
                    property="value"       // 集合中的鍵值
                    length="3"                  // 取3 個(gè)元素
      offset="1">                               // 從第 2 個(gè)位置取
         -------<bean:write name="elementValue"/>
     </logic:iterate>

        </logic:iterate>


        以上代碼先定義一個(gè)名為"catelog" 的HashMap , 存放在request 范圍內(nèi),它的每個(gè)元素的value 為字符串?dāng)?shù)組.
        接下來(lái)外層的<logic:iterate>標(biāo)簽遍歷HashMap 中的所有元素, 內(nèi)層的<logic:iterate>標(biāo)簽訪問(wèn)每個(gè)元素的value 屬性, 遍歷value 屬性引用的字符串?dāng)?shù)組中的所有元素.

    3. 設(shè)置被遍歷的變量
        可以通過(guò)以下方式來(lái)設(shè)置需要遍歷的變量
        (1) 設(shè)置name 屬性, name 屬性指定需要遍歷的集合或Map, 例如:
            <logic:iterate id="element" name="Animals">
                <bean:write name="element"/>
            </logic:iterate>
        (2) 設(shè)置name 屬性和property 屬性, name 屬性指定一個(gè)JavaBean, property 屬性指定JavaBean 的一個(gè)屬性, 這個(gè)屬性為需要遍歷的集合或Map, 例如:
            <logic:iterate id="element" indexId="ind" name="catelog">
                <bean:write name="ind"/>
                <bean:write name="element" property="key"/>
                <logic:iterate id="elementValue" name="element" property="value" length="3" offset="1">
                    --------<bean:write name="elementValue"/>
                </logic:iterate>
            </logic:iterate>
        (3) 設(shè)置collection 屬性,collection 屬性指定一個(gè)運(yùn)行時(shí)表達(dá)式, 表達(dá)式的運(yùn)算結(jié)果為需要遍歷的集合或Map, 例如:
           
            <logic:iterate id="header" collection"<%=request.getHeaderNames()%>">
                <bean:write name="header"/>
            </logic:iterate>

    4. 讀取JavaBean 中的數(shù)據(jù)
      (1) 在Jsp 頁(yè)面中加入JavaBean 如:
            <jsp:useBean id="articleClasses" class="com.GetArticleClasses"/>
          上面這個(gè)JavaBean 要求必須存在一個(gè)集合數(shù)組對(duì)象,如Vector,Collection,ArrayList 等;在這個(gè)JavaBean 的構(gòu)造函數(shù)中,取得數(shù)據(jù)

    庫(kù)中的數(shù)據(jù),并將其存入數(shù)組對(duì)象中。
      (2) 使用<logic:iterate> 標(biāo)簽,取出JavaBean 中存放的數(shù)組對(duì)象中的數(shù)據(jù)

            <logic:iterate
                      id="aClasses"                   //  id   : 給檢索出的元素所命的名.
                      name="articleClasses"   //  name : JavaBean 在頁(yè)面中所設(shè)置的引用ID.
                      property="coll">                 //  coll : JavaBean 中的集合數(shù)組屬性名稱.
                <tr> 
                    <td onMouseOver="this.bgColor=''#FFFFFF'onMouseOut="this.bgColor=''''">&nbsp;&nbsp;&nbsp;&nbsp;
                 <html:link  page="/articleListAction.do"
                                     paramId="classId" 
                                     paramName="aClasses"
                                     paramProperty="classId">
              <bean:write name="aClasses"       // 與<logic:iterate> 標(biāo)簽中的id 屬性相對(duì)應(yīng)
                           property="className" />     // 取出JavaBean中, 存放在集合對(duì)象中的,對(duì)象的className 屬性值
                 </html:link>
             </td>
                </tr>
            </logic:iterate>
      (3) 在JavaBean 中的集合對(duì)象中存放實(shí)體對(duì)象的語(yǔ)句如下:
            ......
            public class GetArticleClasses
            {
                // 數(shù)據(jù)集合
                private Collection coll;
       
     &nbsp;          // 返回?cái)?shù)據(jù)集合
                public Collection getColl()
                {
                    return coll;
                }
                // 構(gòu)造函數(shù), 取出數(shù)據(jù),存入集合中
                public GetArticleClasses()
                {
                    coll = new ArrayList();
                    try{
                        // 數(shù)據(jù)庫(kù)連接
                        Connection connection = DBConnection.getConnection();
                        if(connection != null)
                        {
                            Statement statement = connection.createStatement();
                            ResultSet resultset;
                            ArticleClass articleclass;
                            resultset = statement.executeQuery("SELECT * FROM table ORDER BY id");
             &nbsp;              while( resultset.next())
                            {
                                articleclass = new ArticleClass();
                                articleclass.setId(resultset.getInt("id"));
                                articleclass.setClassId(resultset.getString("class"));
                                articleclass.setClassName(resultset.getString("name"));
                               
                                coll.add(articleclass))
                    }

                    resultset.close();
                    connection.close();
                } else {
                    coll = null;
                }
            } catch(Exception exception) {
                coll = null;
            }
    }
    }

    posted on 2008-03-22 00:55 yunye 閱讀(455) 評(píng)論(0)  編輯  收藏 所屬分類: Struts


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲va在线va天堂成人| 水蜜桃视频在线观看免费播放高清| 国产美女无遮挡免费网站| 羞羞视频在线免费观看| 亚洲精品无码高潮喷水在线| 日本高清高色视频免费| 国产精品高清视亚洲精品| jlzzjlzz亚洲乱熟在线播放| 2020因为爱你带字幕免费观看全集 | 国内成人精品亚洲日本语音| 国产国拍精品亚洲AV片| 18勿入网站免费永久| 一本久久免费视频| 亚洲视频一区在线| 亚洲精品456播放| 成人黄色免费网站| 中文字幕不卡免费视频| 亚洲 暴爽 AV人人爽日日碰| 亚洲精品无码MV在线观看| 青青草国产免费久久久下载| 无码少妇精品一区二区免费动态| jizzjizz亚洲日本少妇| 亚洲精品mv在线观看| 中文字幕在线亚洲精品| 嫩草视频在线免费观看| 99免费在线观看视频| 一级毛片免费视频网站| 中文字幕在线日亚洲9| 亚洲国产成人久久精品影视| 又粗又大又长又爽免费视频| 午夜国产精品免费观看| 久久国产乱子免费精品| 国产99久久久久久免费看| 亚洲AV噜噜一区二区三区| 亚洲成A∨人片在线观看无码| 亚洲午夜福利717| 免费在线观看黄网站| 女人被男人躁的女爽免费视频| 在线日本高清免费不卡| 日韩av无码免费播放| xxxxxx日本处大片免费看|