Замените c:foreach на ui:repeat

Я использую JSF2 и простые лица. У меня есть этот кусок кода

<c:forEach begin="1" end="5" var="i">
    <h:outputLabel value="#{i} #{msg.set}:"/>
</c:forEach>

Можно ли заменить на ui:repeat без создания элементов списка в диапазоне от 1 до 5?


person Ray    schedule 02.07.2013    source источник
comment
Пожалуйста, проверьте: stackoverflow.com/a/7768050/757071   -  person Johny T Koshy    schedule 02.07.2013


Ответы (2)


Возможно, вам удастся избежать создания встроенного списка с помощью spel

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/expressions.html

<ui:repeat var="i" value="#{1,2,3,4,5}">
    <h:outputLabel value="#{i} #{msg.set}:"/>
</ui:repeat>

Но может быть громоздким, если вам нужны сотни.

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

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

<ui:repeat var="i" value="#{util.generate(1,5)}">
    <h:outputLabel value="#{i} #{msg.set}:"/>
</ui:repeat>
person vcetinick    schedule 02.07.2013

Нет. Тег ui:repeat не является общим тегом итерации, он работает только с коллекциями.

Вам придется использовать forEach или проектировать вокруг этого.

person Kayaman    schedule 02.07.2013