JSF Composite组件迭代并显示对象列表

时间:2012-01-06 10:58:25

标签: jsf jsf-2 facelets composite-component

在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

2 个答案:

答案 0 :(得分:8)

使用ui:repeat代替c:forEach

<ui:repeat value="#{cc.attrs.value}" var="user">
    <h1>#{user.name}</h1>
    ...
</ui:repeat>

有关c:forEachui: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>