2010-12-13 28 views
7

Tôi đang cố gắng lặp qua Danh sách Bản đồ bằng s: iterator. Tôi có thể lặp qua Danh sách mà không gặp vấn đề gì, nhưng tôi không thể làm cho nó lặp lại thông qua các mục của bản đồ. Cho đến nay tôi đã nhận điều này:Lặp lại qua Danh sách Bản đồ bằng cách sử dụng 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> 
[..] 

Thẻ tạo ra

<tr></tr> 

cho mỗi mục, nhưng nó sẽ không throug biến lặp thứ hai, vì vậy tôi cho rằng tôi đang làm gì đó sai với thuộc tính value. Bạn có thể giúp tôi với nó không?

Cảm ơn

Jose

Trả lời

12

Đây là một bản demo mà vòng qua danh sách các bản đồ:

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

Dưới đây là JSP để render nó:

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

Note khu vực nội iterator là bối cảnh nhạy cảm nó sẽ sử dụng giá trị cuối cùng được đẩy lên stack. Thuộc tính trạng thái cung cấp cho chúng ta một đối tượng IteratorStatus mỗi lần lặp lại rất hữu ích nếu chúng ta muốn biết lặp lại hiện tại.

+1

Cảm ơn !. Nó hoạt động hoàn hảo. –

Các vấn đề liên quan