Как объединить строку в JSTL в цикле forEach? - PullRequest
3 голосов
/ 26 февраля 2012

Следующий код в JSP Scriptlet работает именно так, как мне нужно (используя Spring / Hibernet).

<%

org.hibernate.Session s=NewHibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();

java.util.List<model.Movies> m=s.createQuery("from model.Movies order by moviesId").list();

for(model.Movies row:m)
{
    String id="";
    for(model.Language lan:row.getLanguages())
    {
        id+=lan.getLanguageId()+",";
    }
    out.println(id);
}

s.flush();
s.getTransaction().commit();

%>

Отображает фильм langiageId для каждого фильма в базе данных (один фильм имеет много языков). он объединяет languageId через запятую для каждого фильма. Например, если первый фильм имеет 3 languageId, он отображает 1,2,3. Если второй фильм (строка в базе данных) имеет 4 языка, он отображает 4,5,6,7 в следующей строке и так далее. Как то же самое может быть возможно с JSTL? Ниже приведена неполная версия цикла JSTL forEach, которую я не понял.

<c:forEach items="${list}" var="row" varStatus="status">
    <c:forEach items="${row.languages}" var="lan" varStatus="status">
        <c:set value="${lan.languageId}" scope="request" var="id">

        </c:set>

    </c:forEach>
</c:forEach>

Как я могу получить languageId через запятую для каждой группы фильмов отдельно? Когда внутренний forEach завершится, id должен быть повторно инициализирован в пустую строку, такую ​​как строка, показанная в Scriptlet.

1 Ответ

3 голосов
/ 26 февраля 2012

Это должно сделать:

<c:set value="${id}${status.first ? '' : ','}${lan.languageId}" scope="request" var="id" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...