2011-01-04 12 views
0
      ${test} 
          <c:forEach items=" ${test}" var="sharedType"> 
            ${sharedType}<br/> 
           <c:if test="${sharedType == 2}" > 
            <span class="tweet-button"></span> 
           </c:if> 
           <c:if test="${sharedType == 1}" > 
            TEST 
            <a href="#" class="fbshare-button">Share</a> 
           </c:if> 
          </c:forEach> 

Die Ganzzahlliste ist 1,2,3. Auf meiner Seite zeigt es [1,2,3] für $ {test} und "[1" "2" "3" für $ {sharedType} in 3 Iterationen. Es sieht so aus, als ob JSTL denkt, dass es sich um einen String handelt, der durch ein Komma und nicht durch eine Liste getrennt ist. Der Code, um die Liste in Java zu generieren ist:JSTL <c:forEach> nicht unterstützt Liste <Integer>?

List<Integer> test= new ArrayList<Integer>(); 
      test.add(1); 
      test.add(2); 
      test.add(3); 

Ich habe für eine Weile mit diesem zu kämpfen, kann mir jemand dabei helfen? Vielen Dank.

+1

Versuchen Sie, Leerzeichen in '" $ {test} "' zu entfernen. –

+0

fügen Sie Sie mit der JSTL-Version, die die $ {} -Notation selbst auswertet (wenn ich mich richtig erinnere es ist JSTL-RT), oder ist die JSP Auswertung für Sie? – Yoni

Antwort

3

Nur in meiner App überprüft und so als Antwort: Versuchen Sie Platz von items=" ${test}" zu entfernen. Andernfalls führen Sie das Äquivalent dieses Java-Ausdrucks " " + testList aus. Offensichtlich ist das Ergebnis keine Liste.

und "[1" "2" "3" für $ {} sharedType in 3 Iterationen
Wahrscheinlich gibt es nur eine Iteration und Sie sind das Ergebnis von test.toString() Anruf sehen.

+0

Es hat funktioniert! Danke, Nikita! – Bobo

Verwandte Themen