2016-06-08 224 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