iterate从论坛来的资料

来源:互联网 发布:淘宝怎么打通人工客服 编辑:程序博客网 时间:2024/05/07 16:04
 

●●●●200分在Struts中,<logic:iterate 、、、表示什么意思?有什么作用?应该怎样应用?最好详细点!详见内容!

楼主zsq666(bluechina)2003-10-22 11:02:37 在 Java / 框架、开源 提问

<logic:iterate   id="book"   collection="<%=booklist%>"   type="shopping.util.Book"   offset="0"   length="2">  
                    <tr>  
                          <td><%=book.getBookName()%></td>  
                          <td><%=book.getAuthor()%></td>  
                          <td>waiting...</td>  
                    </tr>  
    </logic:iterate> 问题点数:100、回复次数:15Top

1 楼zsq666(bluechina)回复于 2003-10-22 11:04:32 得分 0

补充一下,针对下面的jsp程序,能否解释一下iterate的应用:  
        <!--   /u8D2D/u4E66/u7F51/u7AD9/u7684/u521D/u59CB/u754C/u9762   -->  
  <%@   page   language="java"   %>  
  <%@   taglib   uri="/WEB-INF/struts-bean.tld"   prefix="bean"   %>  
  <%@   taglib   uri="/WEB-INF/struts-html.tld"   prefix="html"   %>  
  <%@   taglib   uri="/WEB-INF/struts-logic.tld"   prefix="logic"   %>  
  <html:html>  
      <head>  
          <title>  
              <bean:message   key="initial.title"/>  
          </title>  
      </head>  
      <body>  
  <!--input   the   book   name   that   looked   up   by   logon   user   -->  
          <html:form   action="/shopping/initialBookAction"   focus="form1">  
              <table>  
                  <tr>  
                      <th>  
                              <bean:message   key="initial.lookup"   />  
                      </th>  
                      <td>  
                          <html:text   property="bookname"   size="16"   maxlength="16"/>  
                      </td>  
                      <td>  
                          <html:submit   property="submit"   value="Submit"/>  
                          <html:submit   property="submittotallist"   value="book   list"/>  
                      </td>  
                  </tr>  
              </table>  
  <!--display   all   the   book   that   display  
          it   includes   two   situations:1,all   books  
                                                                2,the   books   that   looked   up  
    -->  
        <%  
                  String   button1   =   (String)request.getParameter("submit");  
                  String   button2   =   (String)request.getParameter("submittotallist");  
                if(button1!=null||button2!=null){  
        %>  
                <table   border="1">  
                    <tr>  
                          <td><bean:message   key="initial.bookname"/></td>  
                          <td><bean:message   key="initial.author"/></td>  
                    </tr>  
                    <%  
                            Iterator   booklist   =(Iterator)session.getAttribute("bookList");  
                            if(booklist==null)  
                                  System.out.println("booklist   is   null");  
                            else  
                                    System.out.println("booklist   is   NOT   null");  
                    %>  
                  <%           for(;booklist.hasNext();){  
                                      shopping.util.Book   bookTemp   =   (shopping.util.Book)booklist.next();  
                  %>  
                  <tr>  
                      <td>  
                      <A   href="/shopping/shopping/lookupBookAction.do?lookupbookname=<%=bookTemp.getBookName()%>"><%=bookTemp.getBookName()%></A>  
                      </td>  
                      <td><%=bookTemp.getAuthor()%></td>  
                  </tr>  
                  <%}%>  
                    <logic:iterate   id="book"   collection="<%=booklist%>"   type="shopping.util.Book"   offset="0"   length="2">  
                    <tr>  
                          <td><%=book.getBookName()%></td>  
                          <td><%=book.getAuthor()%></td>  
                          <td>waiting...</td>  
                    </tr>  
                    </logic:iterate>  
                </table>  
  <%}%>  
          </html:form>  
      </body>  
   
  </html:html>Top

2 楼phiai(Rebecca)回复于 2003-10-22 11:36:57 得分 10

Iterator是design   pattern中的一种,在java中是一个interface,在struts中则是一个循环标记。  
  先定义一个id,然后定义你要传递的object,以及这个object的type。之后通过tag来写入每个属性。注意tag的配对。  
  <logic:iterate   name="vesselInList"   id="vesselIn"   scope="request"       type="longkou.entity.VesselIn">    
  <tr   bgcolor=#ffffff   align="center">    
  <td   height=25   width="60">  
    <bean:write   name="vesselIn"   property="vessel_no"/>  
  </td>  
  <td   height=25   width="60">  
    <bean:write   name="vesselIn"   property="voyage_no"/>  
  </td>  
  <td   height=25   width="55">  
    <bean:write   name="vesselIn"   property="from_port_no"/>  
  </td>  
  <td   height=25   width="60">  
    <bean:write   name="vesselIn"   property="end_port_no"/>  
  </td>  
  <td   height=25   width="58">  
    <bean:write   name="vesselIn"   property="man_approve"/>  
  </td>  
  <td   height=25   width="101">  
    <bean:write   name="vesselIn"   property="dept_approve"/>  
  </td>  
  <td   height=25   width="162">  
    <bean:write   name="vesselIn"   property="date_approve"/>  
  </td>  
  </tr>  
       
  </logic:iterate>Top

3 楼daquan198163(PowerStone)回复于 2003-10-22 13:38:36 得分 5

name是一个集合(如ArrayList);id是给每次循环得到集合中的一个对象起的一个暂时的名字,作用范围在标签体内;type是集合中对象的类型;scope是集合存在的范围(request/session)。  
  通常与<bean:write   name=""   property=""   filter=""/>配合使用,name值要与前面的id值相等。Top

4 楼zsq666(bluechina)回复于 2003-10-22 15:20:36 得分 0

<logic:iterate   id="book"   collection="<%=booklist%>"   type="shopping.util.Book"   offset="0"   length="2">  
                    <tr>  
                          <td><%=book.getBookName()%></td>  
                          <td><%=book.getAuthor()%></td>  
                          <td>waiting...</td>  
                    </tr>  
    </logic:iterate>  
  中“collection”是什么意思?“offset”、“length”各是什么意思??Top

5 楼whyxx(最近有点闲)回复于 2003-10-22 17:59:52 得分 5

这里有你想要的东西  
  http://jakarta.apache.org/struts/userGuide/struts-logic.htmlTop

6 楼VVV_lucky(*太阳*)回复于 2003-10-23 09:44:15 得分 5

在jakarta下的struts里都有例子,你看看就完全明白了。  
  目录嵌套为:  
  jakarta-struts-1.1-src/jakarta-struts-1.1-src/src/share/org/apache/struts/taglib/logicTop

7 楼fengcau(风雨情缘)回复于 2003-10-24 10:53:31 得分 15

在逻辑标记库中定义了<logic:iterate>标记,它能够根据特定集合中元素的数目对标记体的内容进行重复的检查。集合的类型可以是java.util.Iterator,java.util.Collection  
   
  ,java.util.Map或是一个数组。有三种方法可以定义这个集合:  
   
  l                   使用运行时间表达式来返回一个属性集合的集合  
   
  l                   将集合定义为bean,并且使用name属性指定存储属性的名称。  
   
  l                   使用name属性定义一个bean,并且使用property属性定义一个返回集合的bean属性。  
   
  当前元素的集合会被定义为一个页作用域的bean。属性如下,所有这些属性都能使用运行时表达式。  
   
  属性  
    描述  
     
  collection  
    如果没有设置name属性,它就指定了要进行重复的集合  
     
  Id  
    页作用域bean和脚本变量的名称,它保存着集合中当前元素的句柄  
     
  indexed  
    页作用域JSP   bean的名称,它包含着每次重复完成后集合的当前索引  
     
  Length  
    重复的最大次数  
     
  Name  
    作为集合的bean的名称,或是一个bean名称,它由property属性定义的属性,是个集合  
     
  Offset  
    重复开始位置的索引  
     
  property  
    作为集合的Bean属性的名称  
     
  Scope  
    如果指定了bean名称,这个属性设置bean的作用域。若没有设置,搜索范围从页到应用程序作用域  
     
  Type  
    为当前定义的页作用域bean的类型  
     
   
  例如:  
   
  <logic:iterate   id=”currentInt”  
   
  collection=”<%   =myList   %>”  
   
  type=”java.lang.Integer”  
   
  offset=”1”  
   
  length=”2”>  
   
          <%   =currentint   %>  
   
          </logic:iterate>  
   
  代码将从列表中的第一个元素开始重复两个元素并且能够让当前元素作为页作用域和java.lang.Integer类型的脚本变量来使用。也就是说,如果myList包含元素1,2,3,4等,代码将会打印1和2。  
   
  Top

8 楼caodavid2003(骆驼祥子)回复于 2003-10-24 12:33:14 得分 0

upTop

9 楼lj0425(冰芝麻)回复于 2003-10-24 16:28:29 得分 15

<logic:iterate   id="book"   collection="<%=booklist%>"   type="shopping.util.Book"   offset="0"   length="2">  
                    <tr>  
                          <td><%=book.getBookName()%></td>  
                          <td><%=book.getAuthor()%></td>  
                          <td>waiting...</td>  
                    </tr>  
    </logic:iterate>  
   
  id->                   </logic:iterate>标签内的bean标识名称。  
  collection->   一个数据集合。(你的程序中必有booklist数据结构的相关定义<%……%>)  
  type->               用于取collection中每个数据时做相应的类型转换。也就是collection中每个元素的类型。  
  offset->           偏移量,从什么开始取数据。  
  length->           取多长数据。  
  <%=book.getBookName()%>   这个就完全是取决于每个程序的不同了。写这个程序的老兄好像不太像让你搞明白。其实这样写你会容易明白:<bean:write   name="book"   property="bookName"/>其作用是完全一样的。Top

10 楼lj0425(冰芝麻)回复于 2003-10-24 16:35:17 得分 10

看了一下你的程序:  
  <%  
                            Iterator   booklist   =(Iterator)session.getAttribute("bookList");  
                            if(booklist==null)  
                                  System.out.println("booklist   is   null");  
                            else  
                                    System.out.println("booklist   is   NOT   null");  
                    %>  
  这个就是我说的你的booklist   的数据来源—————从session中取得。  
  [建议]:  
  你要是自己做项目,就最好不要从session中做数据。完全可以定义一个ActionForm来传递数据。  
  于是:  
  <logic:iterate   id="book"   collection="<%=booklist%>"   type="shopping.util.Book"   offset="0"   length="2">  
  将会变成:  
  <logic:iterate   id="book"   name="YourFormBeanName"   property="bookList"   type="shopping.util.Book"   offset="0"   length="2">  
   
  Top

11 楼l7980(天使抛弃的小猫)回复于 2003-10-28 13:07:04 得分 0

struts中最好只用标签Top

12 楼gfzhx(小小)回复于 2003-10-28 13:42:29 得分 5

哈哈,Struts中的标签绝对没有jstl的标签好用,而且还是标准的java规范,多好,完全可以替代Struts中的标签,我们就是用jstl,非常简单而且功能强大,而且自己写的标签还可以用EL语言。Top

13 楼gfzhx(小小)回复于 2003-10-28 13:46:03 得分 10

<c:forEach   var="book"   items="${booklist">  
                    <tr>  
                          <td><c:out   value="${book.bookName}"   /></td>  
                          <td><c:out   value="${book.author}"   /></td>  
                          <td>waiting...</td>  
                    </tr>  
    </c:forEach>  
  多简单。  
  具体请参考sun的java   stander   tag   library标准。  
  Top

14 楼kui(kui)回复于 2003-10-30 19:08:39 得分 15

下面我给出一个logic:iterate   标签在数据库查询表格显示结果的实例,包含了分页、删除、编辑、更新、连接功能。所有代码由JSPStudio自动产生,JSPStudio下载地址ftp://162.105.80.43/incoming/  
   
  代码如下:  
  lyk.java/lykDAO.java/lykForm.java/lykAction四个文件及20分见:  
  http://expert.csdn.net/Expert/topic/2400/2400412.xml?temp=.2245447  
   
  另外包含分页、连接、删除、更新功能的软件表格文件lykOUT.jsp内容如下:  
  --------------  
  <%@   page   contentType="text/html;charset=GB2312"   language="java"   %>  
  <%@   taglib   uri="/WEB-INF/struts-bean.tld"   prefix="bean"   %>  
  <%@   taglib   uri="/WEB-INF/struts-html.tld"   prefix="html"   %>  
  <%@   taglib   uri="/WEB-INF/struts-logic.tld"   prefix="logic"   %>  
   
  <html:html>  
  <head>  
  <title></title>  
  <html:base/>  
  </head>  
  <body   bgcolor="white">  
  <table   cellPadding=2   width="80%"   border=2>  
  <tr>  
  <td><span   CONTENTEDITABLE=true>user_id</span></td>  
  <td><span   CONTENTEDITABLE=true>password</span></td>  
  <td><span   CONTENTEDITABLE=true>name</span></td>  
  <td><span   CONTENTEDITABLE=true>description</span></td>  
  <td><span   CONTENTEDITABLE=true>web_site</span></td>  
  <td><span   CONTENTEDITABLE=true>address</span></td>  
  <td><span   CONTENTEDITABLE=true>删除</span></td>  
  <td><span   CONTENTEDITABLE=true>编辑</span></td>  
  <td><span   CONTENTEDITABLE=true>链接</span></td>  
   
  </tr>  
  <bean:define   property='offset'   name='lykForm'     id='offset'   />  
  <bean:define   property='length'   name='lykForm'     id='length'   />  
  <logic:iterate   name='lyk'   id='lyk'   type='OST.lyk'   scope='request'   offset='<%=   String.valueOf(offset)   %>'   length='<%=   String.valueOf(length)   %>'>  
  <logic:notEqual   name='lykForm'   property='action'   value='edit'>    
  <tr>  
  <td><bean:write   name='lyk'   property='user_id'   /></td>  
  <td><bean:write   name='lyk'   property='password'   /></td>  
  <td><bean:write   name='lyk'   property='name'   /></td>  
  <td><bean:write   name='lyk'   property='description'   /></td>  
  <td><bean:write   name='lyk'   property='web_site'   /></td>  
  <td><bean:write   name='lyk'   property='address'   /></td>  
  <td><a   href="lykAction.do?action=delete&expression=<bean:write   name='lyk'   property='user_id'   />">删除</a></td>  
  <td><a   href="lykAction.do?action=edit&expression=<bean:write   name='lyk'   property='user_id'   />">编辑</a></td>  
  <td><a   href="lykAction.do?action=link&expression=<bean:write   name='lyk'   property='user_id'   />">链接</a></td>  
   
  </tr>  
  </logic:notEqual>    
  <logic:equal   name='lykForm'   property='action'   value='edit'>    
  <tr>  
  <form     method='post'   name='lykForm'   action="/OST/lykAction.do?action=update&expression=<bean:write   name='lyk'   property='user_id'   />">  
  <td><html:text   name='lyk'   property='user_id'   /></td>  
  <td><html:text   name='lyk'   property='password'   /></td>  
  <td><html:text   name='lyk'   property='name'   /></td>  
  <td><html:text   name='lyk'   property='description'   /></td>  
  <td><html:text   name='lyk'   property='web_site'   /></td>  
  <td><html:text   name='lyk'   property='address'   /></td>  
  <td><a   href="lykAction.do?action=delete&expression=<bean:write   name='lyk'   property='user_id'   />">删除</a></td>  
  <td><html:submit   value='更新'></html:submit></form   ><html:form     method='post'   action='/lykAction.do?action=reset'><html:submit   value='取消'></html:submit>  
  </html:form   ></td>  
  <td><a   href="lykAction.do?action=link&expression=<bean:write   name='lyk'   property='user_id'   />">链接</a></td>  
   
  </tr>  
  </logic:equal>    
  </logic:iterate>  
   
  <tr><td     align=middle   colSpan=10   ><bean:write   property='mybeanvariable1'   name='lykForm'   filter='false'   /></td></tr>  
   
  </tr>  
  </table>  
  </body>  
  </html:html>  
  --------------------------------------------------------------------------  
  其中在“<logic:iterate   name='lyk'   id='lyk'   type='OST.lyk'   scope='request'   offset='<%=   String.valueOf(offset)   %>'   length='<%=   String.valueOf(length)   %>'>”中,offset代表本页开始显示的记录,length代码本页显示的记录条数。  
  <logic:notEqual   name='lykForm'   property='action'   value='edit'>   表示非常编辑时执行下面的代码。  
  <logic:equal   name='lykForm'   property='action'   value='edit'>   表示编辑时执行下面的代码。  
  <a   href="lykAction.do?action=link&expression=<bean:write   name='lyk'   property='user_id'   />">是显示分页及相应连接的内容。  
   

原创粉丝点击