我不懂为什么<tr>和<td>标签都随着循环多次输出了呢?该怎么理解这段代码呢?
jsp页面的代码如下:
<%
Map<String,Goods> goodsMap=(Map<String,Goods>)application.getAttribute("goodsMap");
%>
<table>
<tr><td>商品名称</td><td>商品价格</td><td>操作</td></tr>
<%
Collection<Goods> goodsColl=goodsMap.values();
for(Goods goods : goodsColl){
%>
<tr> <td><%=goods.getGoodsName() %></td> <td><%=goods.getGoodsPrice() %></td><td><a href="/webDemo3/buy?goodsId=<%=goods.getGoodsId()%>">购买</a></td> </tr>
<%
}
%>
jsp页面会被解析为java文件,你可以到apache-tomcat-7.0.64\work\Catalina\localhost 目录下找到。apache-tomcat-7.0.64是我的tomcat目录,你的可能不一样。找到之后看java代码就明白了
<tr> <td><%=goods.getGoodsName() %></td> <td><%=goods.getGoodsPrice() %></td><td><a href="/webDemo3/buy?goodsId=<%=goods.getGoodsId()%>">购买</a></td> </tr>
外层的tr拿走。 只给TD 循环赋值就可以了。
TR放在循环外
你把tr放在循环体中,那么有多少个商品,就会输出多少组tr呗。
<% Collection<Goods> goodsColl=goodsMap.values(); for(Goods goods : goodsColl){ '<tr> <td><%=goods.getGoodsName() %></td> <td><%=goods.getGoodsPrice() %></td><td><a href="/webDemo3/buy?goodsId=<%=goods.getGoodsId()%>">购买</a></td> </tr>' } %> 这样去理解就好了。