2016-06-08 279 views
1

我正在寫一個Spring MVC Web應用程序迭代通過Java列表

我有一個List,我用填充

List items = jdbcTemplate.queryForList(query); 

現在,它看起來像這樣,當我使用JSTLView打印:

[{id=1, name=John, status=1}, {id=2, name=Smith, status=1}] 

再次,在JSTL我可以通過它像這樣重複:

<c:forEach var="item" items="${items}"> 
    ${item.id}, ${item.name}, ${item.status} 
</c:forEach> 

我想做一個Controller相同,以得到公正的id

List list = ""; 

for (int i = 0; i < items.size(); i++) { 
    list += items.get(i) + ","; 
} 

可是如何才能讓剛剛從小區的ID?

+9

使用泛型類型,而不是原始類型。你應該有一個列表,而不是一個列表。閱讀您正在使用的方法的javadoc:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#queryForList-java.lang.String - 。它返回一個'List >'。 –

+0

@JBNizet也許這應該是一個答案。 – 4castle

+1

@ 4castle我希望OP能夠自己找出解決方案,並且學會閱讀javadoc的重要性,而不是用解決方案給他/她餵食。 –

回答

4

的問題是,你正在做的:

List items = jdbcTemplate.queryForList(query); 

這意味着,您聲明一個列表作爲原始數據持有人(順便說一句這是一個不好的做法)

如果你這樣做而不是像

List<Map<String, Object>> items = jdbcTemplate.queryForList(query); 

,那麼你可以很容易地做這樣的事情

List<Map<String, Object>> myFooList = new ArrayList<Map<String, Object>>(); 
    for (Map<String, Object> map : myFooList) { 
     // your index here like foo.getId() 
    } 
+0

它不會更像'map.get(「id」)'?它實際上並沒有返回它們的對象,只是一個類似ResultSet的'List',其中包含鍵列的表列名稱。 – 4castle

+1

隨着額外的評論,像一個魅力工作!感謝你們倆 :) – mariobgr