<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 鐵手 閱讀(4135) 評論(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
      回復  更多評論    
    主站蜘蛛池模板: 亚洲欧洲无码AV电影在线观看| 亚洲国产精品成人综合色在线婷婷| a级毛片免费播放| 亚洲美女视频免费| 精品免费国产一区二区三区| 国产精品成人免费观看| 亚洲福利一区二区精品秒拍| 日本免费高清一本视频| 无码免费午夜福利片在线| 爱情岛论坛亚洲品质自拍视频网站 | 亚洲日本久久一区二区va| 亚洲av无码天堂一区二区三区 | 99视频在线精品免费| 亚洲成a人片在线不卡一二三区 | 亚洲精品二区国产综合野狼 | 亚洲欧洲日本精品| 免费a级毛片永久免费| 久久99国产综合精品免费| 美女扒开尿口给男人爽免费视频| 久久亚洲国产视频| 日批日出水久久亚洲精品tv| 久久国产高潮流白浆免费观看| 免费中文字幕视频| 91丁香亚洲综合社区| 亚洲成AV人片在线播放无码| 免费特级黄毛片在线成人观看| 亚洲一区二区在线免费观看| 黄网站色成年片大免费高清| 亚洲妇女水蜜桃av网网站| 亚洲熟妇中文字幕五十中出| 国产成人免费全部网站 | 免费无码A片一区二三区| 91精品成人免费国产| 亚洲AV无码国产剧情| 亚洲精品视频在线免费| 在线日韩日本国产亚洲| 国产成人青青热久免费精品| 波多野结衣在线免费观看| 久久久久se色偷偷亚洲精品av | 成人毛片18女人毛片免费| 精品熟女少妇av免费久久|