我正在使用两个要在JSP文件中显示的列表。我根据它们(迭代器的)状态是偶数还是奇数来对列表的行进行着色。问题是我首先有一个正确显示颜色的迭代器,然后我有另一个迭代器,它应该以第一个迭代器结束的相反颜色开始。现在它取决于第一个的状态。
说第一个有两行 奇怪的 2.甚至
第二个迭代器以: 奇怪的 2.甚至
这很好。但是如果第一个列表有三个对象,那么它将如下所示: (第一) 奇怪的 甚至 奇怪的 (第二) 奇怪的 2.甚至
连续有两个'奇数',这意味着这些线将具有相同的颜色。
我希望在第二个迭代器上以偶数或奇数开始,具体取决于第一个结果。有没有聪明的方法来做到这一点?
修改
<s:iterator var="men" value="men" status="rowstatus">
<tr class="<s:if test="#rowstatus.odd == true ">odd</s:if><s:else>even</s:else>">
<td><property value="name"/></td>
<td><property value="age"/></td>
<td><property value="length"/></td>
</tr>
</s:iterator>
<s:iterator var="women" value="women" status="rowstatus">
<tr class="<s:if test="#rowstatus.odd == true ">odd</s:if><s:else>even</s:else>">
<td><property value="name"/></td>
<td><property value="age"/></td>
<td><property value="length"/></td>
</tr>
</s:iterator>
答案 0 :(得分:4)
实际上,您可以(并且应该)仅使用CSS执行此操作,而不应用特定的类。
具有以下简化的JSP代码:
<table id="myTable">
<s:iterator value="men">
<tr>
<td><property value="name"/></td>
<td><property value="age"/></td>
<td><property value="length"/></td>
</tr>
</s:iterator>
<s:iterator value="women">
<tr>
<td><property value="name"/></td>
<td><property value="age"/></td>
<td><property value="length"/></td>
</tr>
</s:iterator>
</table>
您可以应用nth-child的简单奇数/偶数规则(在CSS文件中,或在页面<head>
部分的样式块中):
<style>
table#myTable tr:nth-child(odd) {
background-color : white;
}
table#myTable tr:nth-child(even) {
background-color : silver;
}
</style>
答案 1 :(得分:0)
我没有看到在视图层上做这项工作的任何理由,特别是因为没有设置额外的变量来保持迭代器中的状态,所以没有聪明的方法。
组合服务器端的列表,特别是因为每行的内容没有功能差异。在视图层中完成两次完全相同的工作是浪费和混乱。
不相关,但== true
多余且冗长。