在JSP和JSTL中,我会做这样的事情:
<c:forEach items="${userList}" var = "user">
<div id = "user-block">
<h1>${user.name}</h1>
<div id = "user-description">
<p>${user.description}</p>
</div>
<ul>
<li> Age: ${user.age} </li>
<li> City: ${user.city} </li>
<li> Country: ${user.country} </li>
</ul>
</div>
</c:forEach>
我正在尝试使用Facelet Composite Components获得相同的结果:
<cc:interface>
<cc:attribute name="value" type="java.util.List" required="true" shortDescription="The list of objects that should be displayed"/>
</cc:interface>
<cc:implementation>
<div class = "event-block">
</div>
</cc:implementation>
问题在于我不知道如何迭代#{cc.attrs.value}中的对象。
LE: 我想知道是否有办法解决这个问题而不使用JSP或JSTL
答案 0 :(得分:8)
使用ui:repeat
代替c:forEach
。
<ui:repeat value="#{cc.attrs.value}" var="user">
<h1>#{user.name}</h1>
...
</ui:repeat>
有关c:forEach
和ui:repeat
的进一步比较,请参阅http://www.ninthavenue.com.au/blog/c:foreach-vs-ui:repeat-in-facelets。
答案 1 :(得分:0)
您可以使用#{cc.attrs.value}
参考列表。它会是这样的:
<c:forEach items="${cc.attrs.value}" var = "user">
// do your thing
</c:forEach>