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

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

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

    鐵手劍譜

    上善若水
    數據加載中……
    Struts秘籍之第2段:第3.5式: 在JSTL循環中使用索引屬性

    第3.5式. 在JSTL循環中使用索引屬性

    問題

    你想要在在JSTL c:forEach循環而不是Struts logic:iterate循環中通過Struts html標簽使用索引屬性。

    動作要領

    為了創建一個簡單索引屬性的字段,可使用bean:define標簽將循環計數暴露為一個可用于運行時表達式的腳本變量:

     

    <c:forEach var="theItem" items="${MyForm.myItems}" varStatus="loopStatus">
      
    <bean:define id="itemIndex">
        
    <c:out value="${loopStatus.index}"/>
      
    </bean:define>
      
    <br/><html:text property='<%="myItem["+itemIndex+"]"%>'/>
    </c:forEach>

     

    如果索引屬性是一個嵌套的bean 并且你使用的是indexed="true" 屬性,那么可以將Struts logic:iterate標簽替換為JSTL c:forEach:

     

    <c:forEach var="theNestedItem" items="${MyForm.myNestedItems}">
      
    <br/><html:text name="theNestedItem" 
                  property
    ="nestedProperty"
                  indexed
    ="true"/>
    </c:forEach>

     

    動作變化

    JSTL的c:forEach標簽提供了一些額外的功能并且比logic:iterate更加易用。需要循環遍歷的條目可以通過使用EL來指定。JSTL 標簽允許對集合的子集上進行更多的控制,并且循環狀態的細節也很容易獲得。然而,如同所有JSTL標簽一樣,沒有腳本變量被創建。我們在其他招式中所過,在處理索引屬性時,不得不使用腳本變量。特別是如果你沒有使用struts-el標簽庫更是如此。

    bean:define標簽從JSTL創建的范圍變量中創建一個基本變量。這個bean:define標簽基于取自value屬性或者標簽體的值創建了一個新的范圍變量和對應的腳本變量。后一種方式在JSTL和Struts標簽之間建立了一個橋。在這一招中,bean:define標簽用于創建一個包含可用于訪問索引屬性的索引的變量。你可以在第3.4式中的選擇喜好顏色的標但中使用這種技術。

     

    What are your three favorite colors:
    <c:forEach var="theColor" items="${FavoritesForm.color}"
         varStatus
    ="loopStatus">
        
    <bean:define id="ctr">
            
    <c:out value="${loopStatus.index}"/>
        
    </bean:define>
        
    <br/><html:text property='<%="color["+ctr+"]"%>'/>
    </c:forEach>

     

    根據第3.4式,你可以使用Struts-El標簽來消除scriptlet:

     

    What are your three favorite colors:
    <c:forEach var="theColor" items="${FavoritesForm.color}" 
    varStatus
    ="loopStatus">
      
    <br/><html-el:text property='color[${ctr}]'/>
    </c:forEach>

     

    如果需要為一個對象的嵌套屬性創建一個HTML 輸入字段,而該對象是一個索引屬性,那么請在Struts html 標簽中指定indexed="true" 屬性。indexed屬性的用法在使用JSTL c:forEach循環和使用logic:iterate循環時是一樣的。下面是這種技術如何使用在第3.4式中的表單的喜好鏈接部分:

     

    What are your favorite links?
    <table>
        
    <tr>
            
    <th>Name</th>
            
    <th>URL</th>
        
    </tr>
        
    <c:forEach var="webLink" items="${FavoritesForm.webLinks}">
            
    <tr>
                
    <td>
                    
    <html:text name="webLink" 
                           property
    ="name" indexed="true"/>
                
    </td>
                
    <td>
                    
    <html:text name="webLink" 
                           property
    ="url" indexed="true"/>
                
    </td>
            
    </tr>
        
    </c:forEach>
    </table>

     

    渲染后的索引值被正確產生,哪怕是使用了begin, end, 和step屬性來控制循環。下面的c:forEach用法演示了如何為集合的第1個和第3個元素產生輸入字段:

     

    <c:forEach var="webLink" items="${FavoritesForm.webLinks}"
             begin
    ="1" end="3" step="2">
        
    <tr>
            
    <td>
                
    <html:text name="webLink" property="name" indexed="true"/>
            
    </td>
            
    <td>
                
    <html:text name="webLink" property="url" indexed="true"/>
            
    </td>
        
    </tr>
    </c:forEach>

     

    這將產生下面的HTML:

     

    <tr>
        
    <td><input type="text" name="webLink[1].name" value=""></td>
        
    <td><input type="text" name="webLink[1].url" value=""></td>
    </tr>
             
    <tr>
        
    <td><input type="text" name="webLink[3].name" value=""></td>
        
    <td><input type="text" name="webLink[3].url" value=""></td>
    </tr>

     

    為了在循環中渲染動態數據以供顯示,JSTL 工作的很好,并且比對贏得Struts 標簽更易使用。你可以看到,JSTL 在訪問索引屬性方面比Struts 標簽支持的更好。例如,下面的代碼就展示了喜好顏色可以如何顯示:

     

    <c:forEach var="color" items="${favs.color}">
        
    <li><c:out value="${color}"/></li>
    </c:forEach>

     

    相關招式

    第3.4式演示了索引屬性的類似用法。

    你可以參考JSTL 的相關文檔和信息,以及書籍。JSTL規范參見http://java.sun.com/jsp/jstl.

     

    posted on 2005-06-01 14:43 鐵手 閱讀(4128) 評論(1)  編輯  收藏 所屬分類: JavaStruts系列

    評論

    # Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

    本系列源改編自O'Reily的Strus Cookbook
    [引用提示]阿泠引用了該文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
      回復  更多評論    
    主站蜘蛛池模板: 国产亚洲精品久久久久秋霞 | 亚洲欧美国产欧美色欲| 毛片无码免费无码播放| 精品国产综合成人亚洲区| 成年免费大片黄在线观看com| 亚洲国产一区明星换脸| 日韩在线一区二区三区免费视频| 亚洲成av人在片观看| 国产区图片区小说区亚洲区| 热99re久久精品精品免费| 国产亚洲精品美女久久久久| 五月婷婷亚洲综合| 国产精品免费视频观看拍拍| 亚洲不卡中文字幕无码| 猫咪免费人成网站在线观看| 亚洲一区二区三区在线网站| 免费看美女被靠到爽的视频| 男女猛烈xx00免费视频试看| 久久久青草青青国产亚洲免观| 免费国产成人α片| 亚洲中文无码av永久| 国产在线98福利播放视频免费| 成人国产网站v片免费观看| 亚洲成AV人片一区二区| 亚州免费一级毛片| 国产成人综合亚洲| 亚洲毛片αv无线播放一区| xxxxwww免费| 美女视频黄频a免费观看| 亚洲精品无码久久久久去q| 免费可以看黄的视频s色| 午夜亚洲国产精品福利| 亚洲精品成人av在线| 女性自慰aⅴ片高清免费| 国产美女视频免费观看的网站 | 亚洲一区二区三区精品视频| 国产精品免费_区二区三区观看| 丝袜捆绑调教视频免费区| 亚洲丝袜中文字幕| 国外亚洲成AV人片在线观看| 在线看片v免费观看视频777|