有没有办法在不使用任何第三方组件的情况下迭代JSF 1.2中的列表?我知道我可以用战斧来做。我也知道可以使用JSTL完成,但我保留这是我的最后手段。我也不能使用<ui:repeat>
,因为我们使用的是JSF 1.2。在jsf 1.2中有没有<ui:repeat>
这样的优雅方式?
答案 0 :(得分:8)
可以迭代List
的唯一JSF 1.2 component是<h:dataTable>
。
在JSP中,唯一可以迭代List
的其他“标准”(即非“第三方”)标记是JSTL <c:forEach>
。如果您想要迭代的List
在视图构建期间已经可用,那么使用JSTL不应该造成太大的伤害。只有在视图渲染时才可用时才会遇到麻烦,例如因为它嵌套在<h:dataTable>
中并且应该迭代表var
的属性。由于JSTL in JSF2 Facelets... makes sense?
没有其他方法可以不使用第三方库,例如Tomahawk的<t:dataList>
,除非您愿意通过自己创建自定义UIComponent
来重新发明轮子。然而,这不是一项微不足道的工作。
然而,可以在JSF 1.2中集成Facelets 1.x. Facelets 1.x docbook中描述了一个指南。如果你已经有一个使用JSP作为视图技术的现有JSF应用程序,那么这只是一些工作;你需要将JSP转换为Facelets。但它最终会使JSF 2.x的升级路径变得更加容易。另见a.o. Migrating from JSF 1.2 to JSF 2.0和Why Facelets is preferred over JSP as the view definition language from JSF2.0 onwards?