一,什么情况下会用到嵌套循环?
当我们展示多个分类时,每个分类下又展示出推荐的前几个商品,
这时我们需要用到嵌套循环
看一个例子:
说明:作者:刘宏缔 邮箱: 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