Конкатенация в JSP/EL через цикл

Таким образом, я пытаюсь сделать что-то, что не могло бы быть возможно. Я хочу выполнить итерации через что-то вроде этого:

я установлен как итератор

<c:forEach begin="1" end="${total}" var="i">
   <td>${prod${i}.name}</td>
</c:forEach>

Это, Очевидно, не работает, но я думаю, что это изображает то, что я пытаюсь сделать.

Я хочу связать переменную к другой переменной, где я - то, что я хочу связать к prod.name. Обычно название продукта было бы чем-то вроде этого $ {prod1.name}. Таким образом, я хочу заменить 1 итератором, поскольку он проходит цикл.

Я очень плохо знаком с JSP, и EL вводят разработчика. Таким образом, если я делаю это абсолютно неправильное, скажите мне.

Спасибо

1
задан BalusC 9 July 2010 в 20:15
поделиться

3 ответа

Невозможно сделать. Мой совет - реструктурировать ваш код так, чтобы prod был массивом или коллекцией, а затем используйте c: forEach для итерации по его элементам.

1
ответ дан 2 September 2019 в 23:09
поделиться

Если область видимости объекта известна заранее, то это можно обойти, составив ключ с помощью и взяв объект непосредственно из карты области видимости с помощью скобочной нотации. Вот пример, предполагающий, что ${prod1} и так далее должны быть получены из области видимости request:

<c:forEach begin="1" end="${total}" var="i">
   <c:set var="prod" value="prod${i}" />
   <td>${requestScope[prod].name}</td>
</c:forEach>

Если они находятся в области видимости session, используйте ${sessionScope[prod]. name}, а для области видимости application используйте ${applicationScope[prod].name}.

Несмотря на это, такой подход не рекомендуется. Вы должны поместить List в область видимости и выполнять итерацию по нему способом, продемонстрированным JacobM.

См. также:

0
ответ дан 2 September 2019 в 23:09
поделиться

Самый простой (и самый распространенный) способ справиться с такого рода вопросами — это иметь группу продуктов в коллекции: например, у вас есть список объектов продукта, который передается в JSP, а затем вы делаете

<c:forEach items="${products}" var="product">
   <td>${product.name}</td>
</c:forEach>
1
ответ дан 2 September 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: