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中显示的字符串。
答案 0 :(得分:3)
这应该做:
<c:set value="${id}${status.first ? '' : ','}${lan.languageId}" scope="request" var="id" />