迭代器JSF值



我想知道如何将数据迭代器中的值存储在JSF页面中,这样我就可以在一次迭代中在多个位置使用它。比方说,我想在屏幕的5个不同位置显示一个特定的值。

我不确定您正在解决的问题。这听起来很像是在JSP上使用JSF,并使用scriptlets在循环体中多次重复Iterator#next()调用。这确实是行不通的。调用next()显然会返回下一个项目。基本上,您只需要在循环中的一次变量中获取它,然后多次重用该变量。但是无论如何,在JSF页面中使用scriptlets是一种巨大的气味。

当使用JSP作为视图技术时,正确的方法是使用JSTL <c:forEach>标记或任何JSF UIData组件,如<h:dataTable>或Tomahawk的<t:dataList>。所有这些都提供了var属性,您可以在其中指定当前迭代项的作用域属性名称。您可以在标记体中任意多次使用它。

例如

<c:forEach items="#{bean.list}" var="item">
    #{item} ... #{item} ... #{item}
</c:forEach>

当您使用Facelets作为视图技术(幸运的是,它不支持scriptlets)时,您应该为此使用<ui:repeat>标记。

<ui:repeat value="#{bean.list}" var="item">
    #{item} ... #{item} ... #{item}
</ui:repeat>
JSF 2.3(JEE8)首次支持UIData(DataTable)和UIRepeat(Spec 1103)中的Iterable接口。

相关内容

  • 没有找到相关文章

最新更新