JSTL如果要在列表中应用条件

时间:2013-05-08 10:33:28

标签: java jsp jstl

我有一个列表,我将其传递给JSTL。

<c:forEach items="${actionBean.excessList.newActiveCustomerExcessUIList}"                   var="customerExcess">
 <c:set var="clientName" value="${customerExcess.clientName}"                       scope="page"></c:set>
<c:set var="ultimateParent" value="${customerExcess.ultimateParent}"
                        scope="page"></c:set>
 <c:forEach items="${customerExcess.excessList}" var="excess">
    <tr>
    <td><c:out value="${clientName}"></c:out></td>
    <td><c:out value="${ultimateParent}"></c:out></td>
    <td><c:out value="${excess.excessDa }"></c:out></td>

输出页面是 enter image description here

列表中的值为

[CustomerExcessUIBean [clientName = Golden Eagle Retail Grp Ltd,cif = 1,ultimateParent = HSBC Holdings Plc,excessList = [ExcessUIBean [notifyDaHolder = true,excessId = 1,excessDa = DA6,status = New Passive,product = Vostro, measure = Primary,currency = USD,limitAtExcess = 5000000,excessAmount = 95515540.48,excessDate = 02 Oct 2012,maxRiskAmount = 95515540.48,openDate = 02 Oct 2012,daValueForUser = 9,maxRiskDate = 02 Oct 2012],ExcessUIBean [notifyDaHolder = true,excessId = 7,excessDa = DA6,status = New Passive,product = Vostro,measure = Primary,currency = USD,limitAtExcess = 5000000,excessAmount = 95515540.48,excessDate = 02 Oct 2012,maxRiskAmount = 95515540.48,openDate = 02 Oct 2012,daValueForUser = 9,maxRiskDate = 2012年10月2日],ExcessUIBean [notifyDaHolder = true,excessId = 9,excessDa = DA7,status = New Passive,product = Trading,measure = Settlement,currency = MZM,limitAtExcess = 0,excessAmount = 2586033000,excessDate = 2012年10月2日,maxRiskAmount = 2586033000,openDate = 2013年4月5日,daValueForUser = 9,maxRiskDate = 2012年10月2日]]],C ustomerExcessUIBean [clientName = Citibank Na Karachi Br,cif = 4,ultimateParent = HSBC Holdings Plc,excessList = [ExcessUIBean [notifyDaHolder = true,excessId = 4,excessDa = - ,status = New Passive,product = Vostro,measure = Primary,currency = USD,limitAtExcess = 5000000,excessAmount = 95515540.48,excessDate = 02 Oct 2012,maxRiskAmount = 95515540.48,openDate = 02 Oct 2012,daValueForUser = 9,maxRiskDate = 02 Oct 2012]]]]

问题是 当客户名称与上面的名称相同时,如果按客户名称分组,则该字段应显示为空。

3 个答案:

答案 0 :(得分:0)

如果我正确地理解了你的问题(如果我不理解,我会道歉),你想要做的是在内部循环内(循环遍历${customerExcess.excessList}),对于第一次迭代,只有你想要的打印出客户名称。对于其他迭代,您需要一个空白<td>。如果是这种情况,那么您可以使用循环中的状态变量和if语句来处理它,如下所示:

<c:forEach items="${customerExcess.excessList}" var="excess" varStatus="status">
  <tr>
    <td>
      <c:if test="${stat.first}">
        <c:out value="${clientName}"></c:out>
      </c:if>        
    </td>
    <td><c:out value="${ultimateParent}"></c:out></td>
    <td><c:out value="${excess.excessDa }"></c:out></td>

答案 1 :(得分:0)

尝试将前一个元素放在这个

<c:set var="clientName" value="${clientName}" />'

然后将前一个元素与当前元素进行比较。

SEE HERE

答案 2 :(得分:0)

我想在后端创建平面对象结构,例如clientNameclientNameDisplayultimateParent等。并使用您需要的数据填充此bean,例如唯一clientNameDisplay。毕竟,您可以显示一个ArrayList而不是嵌套列表。