Можно ли использовать ui:repeat внутри ui:include?

Мы все знаем разницу между временем сборки и временем рендеринга. Определенно не лучшая идея помещать тег <ui:include> (время сборки) внутри тега <ui:repeat> (время рендеринга), но можно ли делать наоборот? Можем ли мы использовать <ui:repeat> внутри <ui:include>?


person Sekhon    schedule 18.06.2015    source источник


Ответы (1)


Оба пути в порядке.

Определенно не лучшая идея помещать тег <ui:include> (время сборки) внутри тега <ui:repeat> (время рендеринга)

Это неправда. Вы можете смело это делать. Единственное ограничение состоит в том, что вы не можете использовать var из <ui:repeat> внутри src из <ui:include>. Другими словами, следующий подход не будет работать:

<ui:repeat value="#{bean.items}" var="item">
    <ui:include src="/WEB-INF/includes/#{item.foo}.xhtml" />
</ui:repeat>

Это будет работать, только если вы замените <ui:repeat> на <c:forEach>.

Но если вы этого не делаете, например.

<ui:repeat value="#{bean.items}" var="item">
    <ui:include src="/WEB-INF/includes/foo.xhtml">
        <ui:param name="foo" value="#{item.foo}" />
    </ui:include>
</ui:repeat>

Тогда нет проблем. Все будет работать нормально.


но можно ли сделать наоборот? Можем ли мы использовать <ui:repeat> внутри <ui:include>?

Вы также можете безопасно сделать это. Если вы столкнулись с проблемой, просто нажмите кнопку «Задать вопрос» справа вверху.

Смотрите также:

person BalusC    schedule 18.06.2015