`

利用Struts2标签实现多列显示数据

阅读更多
假如有jsp页面要实现一个列表信息,格式如下:
第1条信息 第2条信息
第3条信息 第4条信息
第5条信息 第6条信息
第7条信息 第8条信息
.....

搜索过别的方法,很多人运用jsp代码写入页面来进行循环判断。其实用struts2自带的标签可以实现同样效果,利用iterator标签进行循环,里面用if标签判断何时加入tr标签的开头和结尾,下面实现了两列信息列表的情况:
<table width="540" border="0" cellspacing="0" cellpadding="0">   
       <s:iterator value="cooperList" status="st">   
  
         <s:if test="#st.odd||#st.first">   
              <tr>       
         </s:if>   
  
       <td width="200" height="20">   
         <a href="showSelCooper.action?oid=<s:property value="oid" />" target="_blank">
<s:property value="title"/></a>
       </td>
        <s:if test="#st.even||#st.last">   
            </tr>       
        </s:if>   
        </s:iterator>   
</table>  

<table width="540" border="0" cellspacing="0" cellpadding="0">
       <s:iterator value="cooperList" status="st">

         <s:if test="#st.odd||#st.first">
              <tr>	
         </s:if>

       <td width="200" height="20">
         <a href="showSelCooper.action?oid=<s:property value="oid" />" target="_blank">
<s:property value="title"/></a>
       </td>
        <s:if test="#st.even||#st.last">
              </tr>	
        </s:if>
        </s:iterator>
</table>


因为iterator标签有如下方法:
boolean isEven() 当前迭代元素索引是否为偶数;
boolean isOdd() 当前迭代元素索引是否为奇数;
boolean isLast() 是否为最后一条元素;
boolean isFirst() 是否为第一条元素。
有以上元素,那么判断何时加入tr就非常方便。

假如是多列(两列以上),那么我们就可以使用如下方法:
int getIndex() 返回当前迭代元素的索引
用它来计算你何时需要加入tr标签的开头和结尾,无非就是if判断的表达式复杂一些,方法还是一样的。

转自:http://smilehehe.iteye.com/blog/148593
分享到:
评论
3 楼 sech 2008-08-12  
<table width="321" height="251" align="center" cellpadding="0" cellspacing="0" border="1">
      <c:set value="1" var="index"></c:set>
  <tr>
      <logic:iterate name="list" id="item">
      <td width="66" align="center"><bean:write name="item" property="id" /></td>
      <c:if test="${index%4==0}">
   </tr><tr>
       </c:if>
       <c:set value="${index+1}" var="index" />
     </logic:iterate>
     <c:set value="${fn:length(list)%4}" var="size"/>
     <c:if test="${size==3}">
      <td width="66" align="center">&nbsp;</td>
      </tr>
    </c:if>
 <c:if test="${size==2}">
      <td width="66" align="center">&nbsp;</td>
      <td width="66" align="center">&nbsp;</td>
      </tr>
    </c:if>
    <c:if test="${size==1}">
      <td width="66" align="center">&nbsp;</td>
      <td width="66" align="center">&nbsp;</td>
      <td width="66" align="center">&nbsp;</td>
      </tr>
    </c:if>
 
    </table>
2 楼 sech 2008-08-12  
<%int i=0;final int j=10;%>
   <logic:present name="result">    	      
           <img  src="../images/dog.gif"  />
           <logic:iterate id="news" name="result" property="companyNews">
           <%if(j==i || 0==i){i=0;%>
             <%}%>
         <font ></font><%=i+1 %>.<a href="../in.do?action=postlook&id=<bean:write name="news" property="id"/>">
         <bean:write name="news" property="title"/></a>&nbsp;&nbsp;(<bean:write name="news" property="modifyDate"/>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <%if((j-1)!=i)
       {i++;}
       else{i++;%>
        <%}%>
        </logic:iterate>
        <%if((j-1)!=(i-1)){%>
       <%}%>
</logic:present>

这个有计数功能,如果要实现分页效果,只要对这个计数进行判断就可以了,是列的整数输出<tr>,否则就输出<td>,这样实现分列效果
1 楼 magike99 2008-08-11  
struts1有类似的方法实现吗?

相关推荐

Global site tag (gtag.js) - Google Analytics