2016-12-20 5 views
1

入れ子になったループでJSTLの2つの依存ArrayListにアクセスする必要があります。まず、String型のArrayListを繰り返し実行し、ループの値を使用して別のArrayListにアクセスします。ここで最初のforeachループからJSTLループでJSTL変数を使用する

<c:forEach items="${productCatagoryList}" var="category"> 
    <c:forEach items=${${category}} var="item"> 
     ${item.productName} 
    </c:forEach> 
</c:forEach> 

私は、文字列値としてカテゴリを得るでしょうし、これらすべてのカテゴリについて、いくつかの製品を含む別のArrayListがあります。

したがって、最初のループの各文字列値は、2番目のforeachループに使用されます。

コードの2行目でエラーが発生します。 2番目のループの最初のループの結果を使用する方法は?

+0

のためのゲッターを使用することができます最初の 'foreach'ループと' foreach'ループの 'category'値は?あなたはこれの例を挙げることができますか? – VPK

答えて

1

パラメータがcategoryの同じクラスにメソッドを作成できます。文字列型でなければなりません。次に、このメソッドをELから呼び出すことができます。新しいELでは、カスタム関数の代わりに使用できるメソッドを呼び出すことができます。

<c:forEach items="${productCategoryList}" var="category"> 
    <c:forEach items=${getProductsForCategory(category)} var="item"> 
     ${item.productName} 
    </c:forEach> 
</c:forEach> 

あなたはこの

Map<String, List<Product>> productCategory; 

のような製品にカテゴリをマップするなら、あなたは、単にこの変数

との関係がどのように
<c:forEach items="${productCategoryList}" var="category"> 
    <c:forEach items=${productCategory[category]} var="item"> 
     ${item.productName} 
    </c:forEach> 
</c:forEach> 

+0

ありがとう、働いています。どうもありがとうございました。 –