2010-03-10 105 views
-1

春天JDBC模板返回我看起來像下面的列表:如何循環訪問地圖列表中的最佳方式

[{CODE_C=CSC, DESC_C=CSC}, {CODE_C=PG1, DESC_C=PG1}] 

我想上面的列表中印在JSP如下:

CSC-CSC 
PG1-PG1 

你能告訴我做到這一點的最好方法嗎?

+0

你迭代一個'List'或'Map'? – 2010-03-10 15:53:52

+0

1>這是一個Map對象列表嗎? 2>您是否想知道如何使用java構造對集合進行迭代,或者您想知道如何使用jsp標記進行迭代? – saugata 2010-03-10 16:04:14

回答

0
List<String> results = new ArrayList<String>(); 

for (Map<String, String> map : someList) { 
    StringBuilder sb = new StringBuilder(); 
    for (String s : map.values()) { 
     sb.append(s).append('-'); 
    } 
    String result = sb.toString(); 
    results.add(result.substring(0, result.length() - 1); // To cut the trailing '-' 
} 
// Do whatever with the results. 
+0

@ponzao我想在java 1.4 – 2010-03-11 05:15:04

+0

我不得不承認我從來沒有編程在Java 1.4 :)所以下面的一些建議可能是完全錯誤的。 Java 1.4沒有StringBuilder,所以你應該使用StringBuffer代替。因爲泛型是在Java 1.5中引入的,所以您應該從集合中刪除類型信息,例如列表 results = new ArrayList ()變成List results = new ArrayList(),我猜你必須在將項目添加到集合,所以而不是results.add(result ...)使用results.add((String)result ...)。但正如我前面提到的,我對1.4不太瞭解。 – ponzao 2010-03-11 07:06:44

1

這似乎是一個地圖列表。

假設你已經將其分配到一個名爲rowsList<Map<?,?>>

for (Map<?,?> row : rows) 
    out.format("%s-%s ",row.get("CODE_C"),row.get("DESC_C")); 
+0

感謝所有的解決方案。 – 2010-03-11 07:47:39

2
<c:forEach var="map" items="${list_with_maps_inside}"> 
    ${map['CODE_C']} ${map['DESC_C']} 
</c:forEach> 
+0

這是唯一正確的JSP答案。由於OP出人意料地沒有接受這個答案,所以看起來他沒有安裝JSTL和/或不知道該怎麼做。你應該詳細闡述一下,而不是隻發佈一個代碼段,Vijay :) – BalusC 2010-03-11 15:42:44

1

雖然不是真的是你的問題,我認爲這是最好使用一個映射來檢索結果。如果你這樣做,你會得到一個對象列表,你可以很容易地使用for循環迭代。從http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html

例子:

public Collection findAllActors() { 
    return this.jdbcTemplate.query("select first_name, surname from t_actor", new ActorMapper()); 
} 

private static final class ActorMapper implements RowMapper { 

    public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
     Actor actor = new Actor(); 
     actor.setFirstName(rs.getString("first_name")); 
     actor.setSurname(rs.getString("surname")); 
     return actor; 
    } 
}