经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
Spring MVC使用jstl 标签c:forEach 遍历输出双层嵌套List的数据方式
来源:jb51  时间:2021/8/16 16:34:46  对本文有异议

Spring MVC jstl 标签c:forEach 遍历输出双层嵌套List数据

具体操作步骤如下:

1、创建Controller

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import com.mahaochen.springmvc.domain.Goods;
  9. import com.mahaochen.springmvc.domain.Inventory;
  10. @Controller
  11. @RequestMapping("/shop")
  12. public class ShoppingController {
  13. @RequestMapping("/shoppingCart")
  14. public String getShoppingCart(HttpServletRequest request, HttpServletResponse response,Model model){
  15. model.addAttribute("list", generateData());
  16. return "shoppingCart";
  17. }
  18. private List<Inventory> generateData(){
  19. List<Inventory> inventories = new ArrayList<Inventory>();
  20. for(int i=0 ; i<2 ; i++){
  21. switch (i) {
  22. case 0:
  23. Inventory inventory1 = new Inventory();
  24. inventory1.setInventoryType("水果");
  25. List<Goods> goodsList1 = new ArrayList<Goods>();
  26. for(int j=0;j<5;j++){
  27. Goods goods = new Goods();
  28. goods.setGoodsName("苹果"+j);
  29. goodsList1.add(goods);
  30. }
  31. inventory1.setGoodList(goodsList1);
  32. inventories.add(inventory1);
  33. break;
  34. default:
  35. Inventory inventory2 = new Inventory();
  36. inventory2.setInventoryType("蔬菜");
  37. List<Goods> goodsList2 = new ArrayList<Goods>();
  38. for(int j=0;j<5;j++){
  39. Goods goods = new Goods();
  40. goods.setGoodsName("茄子"+j);
  41. goodsList2.add(goods);
  42. }
  43. inventory2.setGoodList(goodsList2);
  44. inventories.add(inventory2);
  45. break;
  46. }
  47. }
  48. return inventories;
  49. }
  50. }

2、创建对应的jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>购物车</title>
  8. </head>
  9. <body>
  10. <c:forEach items="${list }" var="item">
  11. ${item.inventoryType}<br />
  12. <c:set value="${item.goodList }" var="subItem"/>
  13. <c:forEach items="${subItem }" var="var">
  14. --${var.goodsName }<br />
  15. </c:forEach>
  16. </c:forEach>
  17. </body>
  18. </html>

注意事项:

JSTL1.1的库 在JSP2.0(Servlet 2.4)及以后(推荐用JSTL1.1及以上)用:

  1. <%@taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
  6. </web-app>

在 Servlet2.3及以前,

  1. <%@taglibprefix="c" uri="http://java.sun.com/jstl/core"%>

与2.4比较,以后版本路径少了jsp。

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  3. <web-app>
  4. </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

  1. <table border="2" bgcolor="aqua" width="500px" >
  2. <c:forEach items="${list}" var="student">
  3. <tr >
  4. <td height="50px">${student.id}</td>
  5. <td height="50px">${student.name}</td>
  6. </tr>
  7. </c:forEach>

2、解决

forEach的获取是通过getter来进行的,在实体类中添加getter方法即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号