Таким образом, я пытаюсь сделать что-то, что не могло бы быть возможно. Я хочу выполнить итерации через что-то вроде этого:
я установлен как итератор
<c:forEach begin="1" end="${total}" var="i">
<td>${prod${i}.name}</td>
</c:forEach>
Это, Очевидно, не работает, но я думаю, что это изображает то, что я пытаюсь сделать.
Я хочу связать переменную к другой переменной, где я - то, что я хочу связать к prod.name. Обычно название продукта было бы чем-то вроде этого $ {prod1.name}. Таким образом, я хочу заменить 1 итератором, поскольку он проходит цикл.
Я очень плохо знаком с JSP, и EL вводят разработчика. Таким образом, если я делаю это абсолютно неправильное, скажите мне.
Спасибо
Невозможно сделать. Мой совет - реструктурировать ваш код так, чтобы prod
был массивом или коллекцией, а затем используйте c: forEach для итерации по его элементам.
Если область видимости объекта известна заранее, то это можно обойти, составив ключ с помощью
и взяв объект непосредственно из карты области видимости с помощью скобочной нотации. Вот пример, предполагающий, что ${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.
Самый простой (и самый распространенный) способ справиться с такого рода вопросами — это иметь группу продуктов в коллекции: например, у вас есть список объектов продукта, который передается в JSP, а затем вы делаете
<c:forEach items="${products}" var="product">
<td>${product.name}</td>
</c:forEach>