Spring MVC使用jstl 標簽c:forEach 遍歷輸出雙層嵌套List的數據方式
具體操作步驟如下:
1、創建Controllerimport java.util.ArrayList;import java.util.List; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping; import com.mahaochen.springmvc.domain.Goods;import com.mahaochen.springmvc.domain.Inventory; @Controller@RequestMapping('/shop')public class ShoppingController { @RequestMapping('/shoppingCart') public String getShoppingCart(HttpServletRequest request, HttpServletResponse response,Model model){ model.addAttribute('list', generateData()); return 'shoppingCart'; } private List<Inventory> generateData(){ List<Inventory> inventories = new ArrayList<Inventory>(); for(int i=0 ; i<2 ; i++){ switch (i) { case 0: Inventory inventory1 = new Inventory(); inventory1.setInventoryType('水果'); List<Goods> goodsList1 = new ArrayList<Goods>(); for(int j=0;j<5;j++){ Goods goods = new Goods(); goods.setGoodsName('蘋果'+j); goodsList1.add(goods); } inventory1.setGoodList(goodsList1); inventories.add(inventory1); break; default: Inventory inventory2 = new Inventory(); inventory2.setInventoryType('蔬菜'); List<Goods> goodsList2 = new ArrayList<Goods>(); for(int j=0;j<5;j++){ Goods goods = new Goods(); goods.setGoodsName('茄子'+j); goodsList2.add(goods); } inventory2.setGoodList(goodsList2); inventories.add(inventory2); break; } } return inventories; }}2、創建對應的jsp頁面
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%><%@taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %> <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>購物車</title></head><body><c:forEach items='${list }' var='item'>${item.inventoryType}<br /><c:set value='${item.goodList }' var='subItem'/><c:forEach items='${subItem }' var='var'>--${var.goodsName }<br /></c:forEach></c:forEach></body></html>注意事項:
JSTL1.1的庫 在JSP2.0(Servlet 2.4)及以后(推薦用JSTL1.1及以上)用:
<%@taglibprefix='c' uri='http://java.sun.com/jsp/jstl/core'%>
web.xml
<?xml version='1.0' encoding='UTF-8'?><web-app version='2.4' xmlns='http://java.sun.com/xml/ns/j2ee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd' ></web-app>
在 Servlet2.3及以前,
<%@taglibprefix='c' uri='http://java.sun.com/jstl/core'%>
與2.4比較,以后版本路徑少了jsp。
web.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'> <web-app></web-app>
不然會出現以下錯誤:
org.apache.jasper.JasperException:/WEB-INF/jsp/shoppingCart.jsp(line: 10, column: 1) According to TLD or attribute directive in tag file,attribute items does not accept any expressions
springMVC的forEach不能正常顯示1、問題在進行springMVC的forEach聯系時,出現如下錯誤
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/index.jsp at line 12
<table border='2' bgcolor='aqua' > <c:forEach items='${list}' var='student'> <tr > <td height='50px'>${student.id}</td> <td height='50px'>${student.name}</td> </tr></c:forEach>2、解決
forEach的獲取是通過getter來進行的,在實體類中添加getter方法即可。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
