我想知道如何将数据迭代器中的值存储在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>