2016-06-08 5 views
1

Я пишу веб-приложения Spring MVCИтерация по Java Список

У меня есть List, что я заполнить с помощью

List items = jdbcTemplate.queryForList(query); 

Теперь это выглядит, когда я печатаю его в View с помощью JSTL :

[{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) + ","; 
} 

Но как получить только идентификатор из ячейки?

+9

Используйте общие типы, а не сырые типы. У вас должен быть список , а не список. Прочтите javadoc методов, которые вы используете: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#queryForList-java.lang.String -. Он возвращает «Список <Карта <Строка, Объект >>». –

+0

@JBNizet Возможно, это должен быть ответ. – 4castle

+1

@ 4castle Я надеюсь, что ОП определит решение сам по себе и узнает, насколько важно читать 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», с именами столбцов таблицы для ключей. – 4castle

+1

С дополнительным комментарием работал как шарм! Спасибо вам обоим :) – mariobgr

Смежные вопросы