2011-06-08 61 views
0

我想知道如何将数据迭代器中的值存储在JSF页面中,以便我可以在单次迭代中多次使用它。让我们说,我想在屏幕上的5个不同的地方显示一个特定的值。迭代器JSF值

回答

0

我不确定你正在苦苦挣扎的问题。这听起来很像您在JSP上使用JSF,并且正在使用小脚本,因为您要在循环主体内多次重复调用Iterator#next()。这确实不起作用。调用next()显然会返回下一个项目。您基本上只需要在循环中将其保存在一个变量中,然后多次重用该变量。但无论如何,在JSF页面中使用scriptlets是一种巨大的气味。

当使用JSP作为视图的技术,适当的方式将使用JSTL<c:forEach> tag或任何JSF UIData组件,诸如<h:dataTable>或Tomahawk的<t:dataList>。它们都提供var属性,您可以在其中指定当前迭代项目的范围属性名称。您可以在标签正文中多次使用它。

E.g.

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

当你使用的Facelets作为视图技术(其中-fortunately-不支持小脚本),你应该使用这个<ui:repeat>标签。

<ui:repeat value="#{bean.list}" var="item"> 
    #{item} ... #{item} ... #{item} 
</ui:repeat>