要分行和列显示同一个属性的不同记录,即该属性存在于数据库的不同记录结果
如:我要显示与zhaopin对应的danweixinxi中的name的所有记录,每行显示3列
根据记录条数计算行数,代码如下:
<table>
<tr>
<s:iterator id="zhaopin" value="list" status="st">
<td><s:property value="#zhaopin.danweixinxi.name"/></td>
<!-- 判断是否整除3 也可以这样写 #st.getIndex()%3==0 -->
<s:if test="#st.modulus(3)==0">
<s:if test="#st.last">
</tr>
</s:if><s:else>
</tr><tr>
</s:else>
</s:if>
</s:iterator>
</table>
这里list是存在于Action中的zhaopin集合属性,所以可以直接读取,需要通过id属性值来读取对应的信息值。关键是:这里的循环,tr,td的控制,#st.last,判断是否到了最后一条记录来结束所有行,否则换行继续读取数据。
iterator标签还有如下方法:
boolean isEven() 当前迭代元素索引是否为偶数;
boolean isOdd() 当前迭代元素索引是否为奇数;
boolean isLast() 是否为最后一条元素;
boolean isFirst() 是否为第一条元素。
用这些方法判断元素位置及个数判断就很方便,以利于有效换行。
也可以直接在循环里用:
<s:if test="#st.modulus(6)==0">
<br></br>
</s:if>
这样就不会有网页标签的书写错误。
进一步改成一下方式更可以避免间隔过大问题:
<s:if test="#st.modulus(6)==0">
<br/>
</s:if>