На моей странице JSP я повторяю список объектов, используя тег c:forEach
. Каждый объект в этой итерации имеет поле имени, и я пытаюсь использовать это имя для ссылки на другие объекты, которые я добавил в мою модель Spring. Однако, когда я делаю это, я получаю исключение, говоря, что свойство второго объекта не может быть найдено в String. Позвольте мне проиллюстрировать упрощенный пример.JSTL получение значения в EL от другого значения EL
<c:forEach items="${companyList}" var="company" varStatus="num">
<c:set var="monthStats" value="${company.name}_month" />
<tr>
<td>Properties This Month</td>
<td>${monthStats.properties}</td>
</tr>
....
</c:forEach>
Все объекты расположены внутри объекта Spring Model и были установлены как этот model.addAttribute(company.getName() +"_month", currentMonthStats);
Я также попытался выбрасывая <c:set
тег и пытается
${(company.name + "_month").properties}
а также
${${company.name + "_month"}.properties}
,
Эти хавент тоже работали. Кроме того, я не был уверен, как сложить мой заголовок, поэтому, если бы он мог лучше сформулировать, дайте мне знать, чтобы другие люди могли найти это, если у них такая же проблема.
Да, я думал, что мне нужно будет сделать что-то подобное. Итак, что не так с двойным поиском? Im путают, почему второй loopkup не работает, если ключ Model для объекта является String, и это то, что я использую для его поиска. Имеет ли это смысл? – jlars62
@ jlars62 'value' уже оценивается против объекта; Я просто не думаю, что вы можете использовать EL внутри этого выражения. Я мог ошибаться; вы можете проверить тип 'monthStats', чтобы узнать. Тем не менее, я все же буду рассматривать работу над слоем представления; легче тестировать и поддерживать, ИМО. –