一,什么情况下会用到嵌套循环?

当我们展示多个分类时,每个分类下又展示出推荐的前几个商品,

这时我们需要用到嵌套循环

看一个例子:

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,演示项目的相关信息

1,项目地址:

https://github.com/liuhongdi/templateloop

2,项目功能说明:

演示了模板中常用的嵌套循环

3,项目结构;如图:

三,配置文件说明

1,pom.xml

org.springframework.boot

spring-boot-starter-thymeleaf

2,application.properties

#errorserver.error.include-stacktrace=always#errorlogging.level.org.springframework.web=trace

#thymeleaf

spring.thymeleaf.cache=falsespring.thymeleaf.encoding=UTF-8spring.thymeleaf.mode=HTML

spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.html

四,java程序说明

1,Category.java

//分类模型

public classCategory {//分类id

Long categoryId;publicLong getCategoryId() {return this.categoryId;

}public voidsetCategoryId(Long categoryId) {this.categoryId =categoryId;

}//分类名称

privateString categoryName;publicString getCategoryName() {return this.categoryName;

}public voidsetCategoryName(String categoryName) {this.categoryName =categoryName;

}//打印

publicString toString(){return " Category:categoryId=" + categoryId +" categoryName=" +categoryName;

}

}

2,Goods.java

//商品模型

public classGoods {//商品id

Long goodsId;publicLong getGoodsId() {return this.goodsId;

}public voidsetGoodsId(Long goodsId) {this.goodsId =goodsId;

}//商品名称

privateString goodsName;publicString getGoodsName() {return this.goodsName;

}public voidsetGoodsName(String goodsName) {this.goodsName =goodsName;

}//商品标题

privateString subject;publicString getSubject() {return this.subject;

}public voidsetSubject(String subject) {this.subject =subject;

}//商品价格

privateBigDecimal price;publicBigDecimal getPrice() {return this.price;

}public voidsetPrice(BigDecimal price) {this.price =price;

}//库存

intstock;public intgetStock() {return this.stock;

}public void setStock(intstock) {this.stock =stock;

}//打印

publicString toString(){return " Goods:goodsId=" + goodsId +" goodsName=" + goodsName+" subject=" + subject+" price=" + price+" stock=" +stock;

}

}

3,HomeController.java

@Controller

@RequestMapping("/home")public classHomeController {//返回分栏目的商品列表

@GetMapping("/category")publicString home(Model model) {//统一使用一个list返回

ArrayList> list = new ArrayList<>();//每个分类及分类下的推荐商品,用一个map来保存//第一个分类

Map map1 = new HashMap();

Category category1= newCategory();

category1.setCategoryId(1L);

category1.setCategoryName("家居");

map1.put("category",category1);//保存商品用的list

ArrayList listGoods1 = new ArrayList();

Goods goods1= newGoods();

goods1.setGoodsId(1L);

goods1.setGoodsName("无线智能感应灯");

listGoods1.add(goods1);

Goods goods2= newGoods();

goods2.setGoodsId(2L);

goods2.setGoodsName("朱之光落地灯");

listGoods1.add(goods2);

Goods goods3= newGoods();

goods3.setGoodsId(3L);

goods3.setGoodsName("儿童抗首菌枕头");

listGoods1.add(goods3);

Goods goods4= newGoods();

goods4.setGoodsId(4L);

goods4.setGoodsName("按摩床垫升级款");

listGoods1.add(goods4);

Goods goods5= newGoods();

goods5.setGoodsId(5L);

goods5.setGoodsName("北欧简约金属茶几");

listGoods1.add(goods5);

map1.put("goodslist",listGoods1);//把map1添加到list

list.add(map1);//第二个分类

Map map2 = new HashMap();

Category category2= newCategory();

category2.setCategoryId(2L);

category2.setCategoryName("美护");

map2.put("category",category2);

ArrayList listGoods2 = new ArrayList();

Goods goods21= newGoods();

goods21.setGoodsId(21L);

goods21.setGoodsName("护手霜套装");

listGoods2.add(goods21);

Goods goods22= newGoods();

goods22.setGoodsId(22L);

goods22.setGoodsName("美白牙贴");

listGoods2.add(goods22);

Goods goods23= newGoods();

goods23.setGoodsId(23L);

goods23.setGoodsName("口腔护理泡沫");

listGoods2.add(goods23);

map2.put("goodslist",listGoods2);//把map2添加到list

list.add(map2);//第三个分类

Map map3 = new HashMap();

Category category3= newCategory();

category3.setCategoryId(3L);

category3.setCategoryName("服装");

map3.put("category",category3);

ArrayList listGoods3 = new ArrayList();

Goods goods31= newGoods();

goods31.setGoodsId(31L);

goods31.setGoodsName("纯色真丝睡袍");

listGoods3.add(goods31);

Goods goods32= newGoods();

goods32.setGoodsId(32L);

goods32.setGoodsName("蚕丝条纹睡衣套装");

listGoods3.add(goods32);

Goods goods33= newGoods();

goods33.setGoodsId(33L);

goods33.setGoodsName("牛津长袖衬衫");

listGoods3.add(goods33);

map3.put("goodslist",listGoods3);////把map3添加到list

list.add(map3);//把list传递给模板

model.addAttribute("list",list);return "home/category.html";

}

}

说明:我们没有使用数据库,因为只是用于演示,

直接用代码写入了11条数据,共三个分类

每个分类的数据各放入一个map中,最后用一个list传递给模板

4,category.html

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐