一般使用struts的iterator标签时,我们用它来遍历一个集合,集合当然是多种多样,比如最普通的那种,list里面放的全是用户对象,每个用户拥有name,age等属性,这时做打印的时候,在tr里面,一般是这样
- <s:iterator value="customerList">
- <tr>
- <td><s:property value="name" /></td>
- <td><s:property value="age"/> </td>
- </tr>
- </s:iterator>
但是想想,一行就放这么两个字段,这样的话假使我只显示这两个,那就得每个用户占一行了,排版实在是太差了,假使有美工的话,我们可以让3个,或者4个用户放在一起,也就是这里的3个tr放一起,做一行。
这时候其实我们自己也能把三个用户放在一行显示,依旧是使用iterator,当然,会多出几个判断:
- <s:iterator value="serviceLs" var="service" status="st">
- <s:if test="#service.isradio==0">
- <s:if test="#st.index%3==0">
- <tr>
- </s:if>
- <td><input type="checkbox" name="serviceChkLsList" class="serviceChk" value="${serviceamenityid}"/> <s:property value="serviceamenityname"/></td>
- <s:if test="#st.index%3==2||#st.last">
- </tr>
- </s:if>
- </s:if>
- <s:elseif test="#service.isradio==1">
- <s:if test="#st.index%3==0">
- <tr>
- </s:if>
- <td><input type="checkbox" name="serviceChkLsList" class="serviceRdo" value="${serviceamenityid}"/><input type="radio" class="rdo1" name="radio_${serviceamenityid}" value="0_${serviceamenityid}" />${serviceamenitynameAry[0]} <input type="radio" class="rdo1" name="radio_${serviceamenityid}" value="1_${serviceamenityid}"/>${serviceamenitynameAry[1]}</td>
- <s:if test="#st.index%==2||#st.last">
- </tr>
- </s:if>
- </s:elseif>
- </s:iterator>
效果图如下: