0

私のstrutsプロジェクトでは、配列リストにレコードのセットがあります。これらのレコードには、名前とカテゴリIDがあります。2番目の配列リストにはcategory(category_id、categoryname)のレコードがあります。

今、私は次のような小見出しとしてカテゴリ名で最初のリストをリストしたいと思います

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 に答える