在JSP Scriptlet中,以下代码可以完全满足我的需求(使用Spring/Hibernate)。
<%
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();
%>
它显示数据库中每个电影的languageId
(一个电影有多种语言)。对于每个电影,它将languageId
连接起来,用逗号分隔。例如,如果第一部电影有3种语言,它会显示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
应该被重新初始化为空字符串,就像脚本中所示的那样。