Значение итератора JSF - PullRequest
0 голосов
/ 08 июня 2011

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

Ответы [ 2 ]

0 голосов
/ 31 октября 2017

JSF 2.3 (JEE8) впервые поддерживает интерфейс Iterable в UIData (DataTable) и UIRepeat ( Spec 1103 ).

0 голосов
/ 08 июня 2011

Я не уверен насчет проблемы, с которой вы боретесь.Это звучит так, как будто вы используете 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...