2010-12-13 13 views
7

s:iteratorを使用してListのマップを反復しようとしています。問題なくListを繰り返し処理できますが、マップのエントリを繰り返し処理することはできません。これまでのところ、私はこれを持っている: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> 
[..] 

タグは、各エントリの

<tr></tr> 

を生成し、それは第二イテレータthroug行っていないので、私は私がと間違って何かをやっていると仮定しますvalue属性あなたはそれで私を助けることができますか?ここで

おかげ

ホセ

答えて

12

は、マップのリストをループのデモである:ここでは

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; 
    } 
} 

はそれをレンダリングするJSPです:

<%@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> 

は、内側に注意してください。 iteratorは文脈依存であり、スタックにプッシュされた最後の値を使用します。 status属性は、現在の反復を知りたい場合に便利なIteratorStatusオブジェクトを各反復に提供します。

+1

ありがとうございます。それは完璧に働いた。 –

関連する問題