Доступ к значению карты в отдельном цикле JSTL - PullRequest
1 голос
/ 23 января 2010

Предположим, что существует результат запроса с именем resultSet, поле которого доступно как templateId.

Также существует карта 'templateMap' с ключами templatedId.

Я не могу получить какой-либо результат из следующих, любая помощь приветствуется.

<c:foreach var="row" items="${resultSet.rows}">
  <c:out value="${templateMap[row.templateId]}" />
</c:foreach>

Примечание: это приложение ужасов кодирования, в котором вышеуказанный набор результатов является результатом <sql:query>.

Следование тоже не работает.

<c:foreach var="row" items="${resultSet.rows}">
  <c:set var="tmplId" value="${row.templateId}" />
  <c:out value="${templateMap[tmplId]}" />
</c:foreach>

1 Ответ

2 голосов
/ 23 января 2010

Код, который вы разместили (и отредактировал), синтаксически действителен, поэтому проблема кроется в другом месте.

Для начала суффикс Id заставляет меня думать, что на самом деле это Number.Фактически, недесятичные числа в EL по умолчанию long.Таким образом, если бы это было Map<Integer, Integer>, то этот код не будет работать.Вам нужно иметь Map<Long, Long> или Map<Long, Integer>, чтобы заставить его работать.

Я не уверен, как мне следует интерпретировать вашу формулировку "кодирование ужасов", но я уверен, что вы уже знаете, что с помощью JSTLSQL taglib для других целей, кроме быстрого прототипирования, считается очень плохой практикой;) Эта логика принадлежит реальным классам Java на уровне доступа к данным.

...