Я не уверен насчет проблемы, с которой вы боретесь.Это звучит так, как будто вы используете JSF в JSP и используете скриптлеты для того, где вы повторяете вызов Iterator#next()
несколько раз в теле цикла.Это действительно не сработает.Вызов next()
, очевидно, вернет следующий предмет.В основном вам нужно получить его в переменной только один раз в цикле, а затем повторно использовать эту переменную несколько раз.Но в любом случае, использование скриптлетов на странице JSF - огромный запах.
При использовании JSP в качестве технологии просмотра правильным способом будет использование JSTL <c:forEach>
тег или любой компонент JSF UIData
, такой как <h:dataTable>
или томагавк <t:dataList>
.Все они предлагают атрибут var
, в котором вы можете указать имя атрибута области действия для итерируемого в данный момент элемента.Вы можете использовать его столько раз, сколько захотите в теле тега.
Например
<c:forEach items="#{bean.list}" var="item">
#{item} ... #{item} ... #{item}
</c:forEach>
Когда вы используете Facelets в качестве технологии просмотра (которая, к сожалению, не поддерживает *)1029 * scriptlets ), для этого вы должны использовать тег <ui:repeat>
.
<ui:repeat value="#{bean.list}" var="item">
#{item} ... #{item} ... #{item}
</ui:repeat>