2017-10-12 8 views
0

JSTL に地図 >でリストのサイズを決定します。しかし、まず、リストのサイズが特定の数値よりも大きいかどうかを確認したい。 は、私は、次のマップを持って

だから私は、この(デモ用テスト番号を入れて)されたいもの:

if (namesById.get(1).size() > 3) 
for (String s: namesById.get(1)){ 
     do something 
    } 

私はJSPでそれを行う必要があります。私はJSTLの初心者なので、書き方を正確には分かりませんし、デバッグするのは難しいです。

<c:if test="${fn:length(namesById[1]) gt 3}" 

</c:if> 

だから私は何をしたいです:私はこの表現を試みた後チェック

  1. まず、特定のキー
  2. を与えることによって、マップからリストを取得する場合は、リストのサイズあなたがマップからキーと値を取得することができJSTLを使用して、リストを

答えて

2

表現言語では、${1}Longと解釈され、これはIntegerのキーと一致しません。基本的にはnamesById.get(1L)を効果的にやっています。

マップをMap<Long, List<String>>に変更しても問題ありません。

-1

を繰り返すその後、大きな一定数

  • であると。その値を使用して、サイズを確認することができます。次の例を確認してください。

    Integer.valueOf(1).equals(Long.valueOf(1)) 
    

    は常にfalseですのでです

    <% 
        Map<Integer, List<String>> namesById = new HashMap<Integer, List<String>>(); 
    
        List<String> list = new ArrayList<String>(); 
        list.add("1"); 
        list.add("2"); 
        list.add("3"); 
        list.add("4"); 
        namesById.put(1, list); 
    
        list=new ArrayList<String>(); 
        list.add("3"); 
        list.add("4"); 
        namesById.put(2, list); 
        pageContext.setAttribute("itemList", namesById); 
    %> 
    
    
    <c:forEach items="${itemList}" var="entry"> 
        <c:if test="${fn:length(entry.value) gt 3}"> 
        Value > 3 
        </c:if> 
    </c:forEach> 
    
  • +0

    なぜdownvotedですか? –

    関連する問題