如何在forEach循环中连接JSTL中的字符串?

时间:2012-02-26 00:28:29

标签: string jstl

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 个答案:

答案 0 :(得分:3)

这应该做:

<c:set value="${id}${status.first ? '' : ','}${lan.languageId}" scope="request" var="id" />