2013-08-05 2 views
1

На моей странице 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} ,

Эти хавент тоже работали. Кроме того, я не был уверен, как сложить мой заголовок, поэтому, если бы он мог лучше сформулировать, дайте мне знать, чтобы другие люди могли найти это, если у них такая же проблема.

ответ

1

В основном вы запрашиваете двойную оценку, и это не работает.

Я бы изменил данные, доставленные на уровень представления, чтобы быть чем-то менее странным, поэтому вы можете получить доступ к нему непатологическим способом, например, поместив статистику месяца в карту, к которой обращается название компании (или id) или напрямую связаны с ними в DTO и т. д.

+0

Да, я думал, что мне нужно будет сделать что-то подобное. Итак, что не так с двойным поиском? Im путают, почему второй loopkup не работает, если ключ Model для объекта является String, и это то, что я использую для его поиска. Имеет ли это смысл? – jlars62

+0

@ jlars62 'value' уже оценивается против объекта; Я просто не думаю, что вы можете использовать EL внутри этого выражения. Я мог ошибаться; вы можете проверить тип 'monthStats', чтобы узнать. Тем не менее, я все же буду рассматривать работу над слоем представления; легче тестировать и поддерживать, ИМО. –

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