2010-12-13 8 views
7

Ich versuche, eine Liste der Karten mit s: Iterator zu durchlaufen. Ich kann die Liste ohne Probleme durchlaufen, aber ich kann es nicht durch die Einträge der Karte iterieren. Bisher habe ich diese bekam:Iterieren über eine Liste von Karten mit s: Iterator

[..] 
<s:iterator value="records" status="recordsStatus" var="record"> 
     <s:if test="#recordsStatus.index ==0"> 
      <tr> 
       <td colspan="*"></td> 
      </tr> 
     </s:if> 
     <tr> 
      <s:iterator value="record.entrySet()" status="fieldStatus"> 
      <td> 
       <s:property value="key"/>/<s:property value="value"/> 
      </td> 
      </s:iterator> 
     </tr> 
    </s:iterator> 
[..] 

Das Tag erzeugt die

<tr></tr> 

für jeden Eintrag, aber es ist nicht throug der zweiten Iterator gehen, so dass ich glaube, ich mache etwas falsch mit das Wertattribut Kannst du mir dabei helfen?

Dank

Jose

Antwort

12

Hier ist eine Demo, die durch Listen der Karte Schleifen:

import com.opensymphony.xwork2.ActionSupport; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 


public class mapTest extends ActionSupport { 
    public List<Map> listmap; 

    public String execute(){ 
    listmap = new ArrayList(); 
    Map map = new HashMap(); 
    map.put("a", "alpha"); 
    map.put("b", "bravo"); 
    map.put("c", "charlie"); 
    listmap.add(map); 
    Map map2 = new HashMap(); 
    map2.put("d", "delta"); 
    map2.put("e", "echo"); 
    map2.put("f", "foxtrot"); 
    listmap.add(map2); 
    return SUCCESS; 
    } 
} 

Hier wird die JSP es zu machen:

<%@taglib prefix="s" uri="/struts-tags"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <body> 
     <h1>Map Test</h1> 
     <table> 
      <thead> 
       <tr> 
        <th>List #</th> 
        <th>key</th> 
        <th>value</th> 
       </tr> 
      </thead> 
      <tbody> 
       <s:iterator value="listmap" status="stat"> 
        <s:iterator> 
         <tr> 
          <th><s:property value="#stat.index"/></th> 
          <td><s:property value="key"/></td> 
          <td><s:property value="value"/></td> 
         </tr> 
        </s:iterator> 
       </s:iterator> 
      </tbody> 
     </table> 
    </body> 
</html> 

Beachten Sie die innere Iterator ist kontextsensitiv und verwendet den letzten Wert, der auf den Stapel geschoben wird. Das status-Attribut gibt uns bei jeder Iteration ein IteratorStatus-Objekt, das nützlich ist, wenn wir die aktuelle Iteration kennenlernen wollen.

+1

Danke !. Es hat perfekt funktioniert. –

Verwandte Themen