Компонент JSF Composite, выполняющий итерацию и отображение списка объектов - PullRequest
2 голосов
/ 06 января 2012

В 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:

<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 ]

8 голосов
/ 06 января 2012

Используйте ui:repeat вместо c:forEach.

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

См. http://www.ninthavenue.com.au/blog/c:foreach-vs-ui:repeat-in-facelets для дальнейшего сравнения c:forEach и ui:repeat.

0 голосов
/ 06 января 2012

Вы можете обратиться к списку с помощью #{cc.attrs.value}. Это было бы что-то вроде:

<c:forEach items="${cc.attrs.value}" var = "user">
   // do your thing
</c:forEach>
...