我在jsp中有一个表,我在其中使用s:iterator标记显示列表中的数据。该列表已按说明排序,我需要能够在每组描述上方的表格中显示一行。例如(想象一下这是一张表):
标题1 -----
1标题1
2标题1
3标题1
Heading2 -----
4标题2
5标题2
Heading3 -----
我想要做的是遍历列表并将当前描述与之前的描述进行比较,如果它们不同,则将当前描述显示为新行。
我尝试了一些不同的变体 - 这不起作用:
<s:iterator value="myList" status="rowStatus">
<s:if test="{myList[%{#rowStatus.index}].description != myList[%{#rowStatus.index-1}].description}">
<tr>
<td colspan="7"><s:text name="description"/></td>
</tr>
</s:if>
我觉得我非常接近,但我似乎无法弄清楚正确的语法。我在这里失踪了什么?
提前致谢!
* j
答案 0 :(得分:4)
OGNL表达式应该是整个"test"
属性:
<s:iterator value="myList" status="rowStatus">
<s:if test="%{myList[#rowStatus.index].description != myList[#rowStatus.index-1].description}">
... etc ...
那就是说,JSP中似乎有很多噪音;我会考虑这样的事情:
<s:iterator value="myList" status="rowStatus">
<s:if test="%{#cur != description}">
... etc ...
</s:if>
<s:set var="cur" value="description"/>
</s:iterator>
还有其他选项,包括在Java端设置标志。