Spring MVC使用jstl 標(biāo)簽c:forEach 遍歷輸出雙層嵌套List的數(shù)據(jù)方式
具體操作步驟如下:
1、創(chuàng)建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、創(chuàng)建對(duì)應(yīng)的jsp頁(yè)面
<%@ 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>購(gòu)物車</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>注意事項(xiàng):
JSTL1.1的庫(kù) 在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>
不然會(huì)出現(xiàn)以下錯(cuò)誤:
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、問(wèn)題在進(jìn)行springMVC的forEach聯(lián)系時(shí),出現(xiàn)如下錯(cuò)誤
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的獲取是通過(guò)getter來(lái)進(jìn)行的,在實(shí)體類中添加getter方法即可。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP中if語(yǔ)句、select 、while循環(huán)的使用方法2. html小技巧之td,div標(biāo)簽里內(nèi)容不換行3. xml中的空格之完全解說(shuō)4. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……5. XML入門的常見(jiàn)問(wèn)題(四)6. php bugs代碼審計(jì)基礎(chǔ)詳解7. ASP使用MySQL數(shù)據(jù)庫(kù)的方法8. ASP動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù)經(jīng)驗(yàn)分享9. WMLScript的語(yǔ)法基礎(chǔ)10. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法
