0

在我的 struts 项目中,我在数组列表中有一组记录,这些记录有它的名称和 categoryid。在第二个数组列表中,我有类别(类别 ID,类别名称)的记录。

现在我想列出第一个带有类别名称的列表作为子标题

ArrayList1:(nameDetailList)
NAME:               CATEGORYID
name1                    1
name2                    2
name3                    1
name4                    5

ArrayList2:(categoryList)
CategoryID          CategoryName
1                     Category-1
2                     Category-2 
3                     Category-3 
4                     Category-4 
5                     Category-5

我需要将这些显示为

Category-1 
    --name1
    --name3
Category-2 
    --name2 
Category-5 
    --name3 

注意:这里我不想显示没有与之关联的记录的类别名称。为此,我在下面编码。

<s:iterator id="catIter"  value="categoryList">
       <s:property value="categoryName"/>
  <s:iterator value="nameDetailList.{ ?this.categoryId==#catIter.categoryId}">
 <s:property value="Name"/>
</s:iterator>
 </s:iterator>

它显示的类别也没有与这些相关的记录。任何人都可以告诉如何控制类别名称的显示。或者有没有其他更好的选择。

4

2 回答 2

0

您可以通过计算与类别相关的 nameDetail 的数量来做到这一点。如果一个类别没有任何 nameDetail 相关,它不会打印它的名称。

如果您有一个按 categoryId 返回 nameDetails 的方法,则可以不计任何数量地执行此操作。我不知道您的情况是否有更好的解决方案。

<s:iterator value="categoryList" var="category">
   <s:set name="counter" value="0"/>

   <s:iterator value="nameDetailList" var="nameDetail">
      <s:if test="#category.categoryId == #nameDetail.categoryId">
          <s:set name="counter" value ="%{#counter + 1}"/>
      </s:if>
   </s:iterator>

   <s:if test="#counter > 0">
     <s:property value="#category.categoryName"/>

     <s:iterator value="nameDetailList" var="nameDetail">
        <s:if test="#category.categoryId == #nameDetail.categoryId">
             <s:property value="#nameDetail.name"/>
        </s:if>       
     </s:iterator>

   </s:if>


</s:iterator>
于 2012-02-07T09:19:17.320 回答
0

我已将我的代码更新为

<s:iterator id="catIter"  value="categoryList" status="catstatu">      
  <s:iterator value="nameDetailList.{ ?this.categoryId==#catIter.categoryId}">
     <s:if test="#catstatus.first==true">
          <s:property value="categoryName"/>
     </s:if>
    <s:property value="Name"/>
  </s:iterator>
</s:iterator>

现在我得到了想要的输出。但是解决方案是最好的吗?

于 2012-02-08T10:09:13.593 回答