在jsp页面回显数据时,经常需要用到
<c:forEach></c:forEach>
一般用于遍历回显集合中的多条数据,但是它的用法有点复杂,所以在这里总结一下。
forEach属性说明
list集合
1.现有许多书籍信息的集合list存入session,list内容如下:
Book类属性:
bookId,bookName,bookPrice,bookAuthor,bookIntroduction。
将一下五本书存进集合list中:
List<Book> list=new ArrayList<Book>();
list.add(new Book(1,"西游记",55,"吴承恩","四大名著之一");
list.add(new Book(2,"红楼梦",52,"曹雪芹","四大名著之一");
list.add(new Book(3,"三国演义",68,"罗贯中","四大名著之一");
list.add(new Book(4,"水浒传",75,"施耐庵","四大名著之一");
将list存进session
request.getSession.setAttribute("list",list);
2.现在要求将所有书籍展示在jsp中的书籍清单上
伪代码如下
<table>
<tr>
<td>图书编号/td>
<td>书名</td>
<td>价格</td>
<td>作者</td>
<td>简介</td>
</tr>
<c:forEach var="b" items="${list}">
<tr>
<td>${b.bookId}</td>
<td>${b.bookName}</td>
<td>${b.bookPrice}</td>
<td>${b.bookAuthor}</td>
<td>${b.bookIntroduction}</td>
</tr>
</c:forEach>
</table>
forEach属性说明:
var:集合中取出来的一个个元素,它的值可以任意取,用于代表集合中的单个元素。这里的b就代表list集合中的一本书。
items:值为集合,但必须使用EL表达式取出
map集合
若map集合为
Map<Book,Integer> Book为书类,Integer为整数(代表数的库存数量)
同样将上面四本书以及它们的库存放入集合map中,那么如何在jsp中展示呢呢?
伪代码如下:
<table>
<tr>
<td>图书编号/td>
<td>书名</td>
<td>价格</td>
<td>作者</td>
<td>简介</td>
<td>库存数量</td>
</tr>
<c:forEach var="b" items="${map}">
<tr>
<td>${b.key.bookId}</td>
<td>${b.key.bookName}</td>
<td>${b.key.bookPrice}</td>
<td>${b.key.bookAuthor}</td>
<td>${b.key.bookIntroduction}</td>
<td>${b.value}</td>
</tr>
</c:forEach>
</table>
参数说明:var中的m,相当于map.entrySet()中取出的数据,m代表一个组键值对,这里键为book,值为书的数量。