在java文件里准备好相关的数据,首先看的是嵌套循环,嵌套循环是先把数据包进list,再用map包起来,再传到网页,然后,一层层的打开,然后,显示数据.如果不是同类型的数据,不要乱放.

先建好User类,这里使用了lombok,其实这个也可以不用,不用的话,就要自己写get/set/toString

复制代码
package com.example.model;

import lombok.Data;

@Data
public class User {
    public Integer userid;
    public String username;
}
复制代码

再建一个Controller类

复制代码
package com.example.control;

import com.example.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class MyController {

    @RequestMapping("/list")
    public String eachlist(Model model){
        List<User> userList=new ArrayList<>();
        for(int i=1;i<10;i++){
            User user=new User();
            user.setUserid(100+i);
            user.setUsername("小小"+i);
            userList.add(user);
        }
        model.addAttribute("userlist",userList);
        model.addAttribute("data","SpringBoot");
        return "eachList";
    }

    @RequestMapping("/map")
    public String eachMap(Model model){
        Map<Integer,Object> userMaps=new HashMap<>();
        for(int i=1;i<10;i++){
            User user=new User();
            user.setUserid(100+i);
            user.setUsername("小小"+i);
            userMaps.put(i,user);
        }
        model.addAttribute("userMaps",userMaps);
        return "eachMap";
    }

    @RequestMapping("/array")
    public String eachArray(Model model){
        User[] userArray=new User[10];
        for(int i=0;i<10;i++){
            User user=new User();
            user.setUserid(100+i);
            user.setUsername("小小"+i);
            userArray[i]=user;
        }
        model.addAttribute("userArray",userArray);
        return "eachArray";
    }

    @RequestMapping("/eachall")
    public String eachall(Model model){
        List<Map<Integer,List<User>>> mapList=new ArrayList<Map<Integer, List<User>>>();
        for(int i=0;i<2;i++){
            Map<Integer,List<User>> myMap=new HashMap<Integer, List<User>>();
            for(int j=0;j<2;j++){
                List<User> myUserlist=new ArrayList<User>();
                for(int k=0;k<3;k++){
                    User user=new User();
                    user.setUserid(k);
                    user.setUsername(i+"小小"+k);
                    myUserlist.add(user);
                }
                myMap.put(j,myUserlist);
            }
            mapList.add(myMap);
        }
        model.addAttribute("mylist",mapList);
        return "eachall";
    }
}
复制代码

这里用了几种方式的遍历循环.导向各自不同的网页.

eachmap
复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>eachmap</title>
</head>
<body>
<!--这里面隐藏了一个参数,usersStat,不声明时,默认为这个,当然,也可以自己声明,这时,可以随意取名字-->
<div th:each="users:${userMaps}">
    <span th:text="${usersStat.count}"></span>&nbsp;
    <span th:text="${usersStat.index}"></span>&nbsp;
    <span th:text="${users.key}"></span>&nbsp;
    <span th:text="${users.value}"></span>&nbsp;
    <!--这里的报错,是软件的问题,因为软件没有识别,但是没有错-->
    <span th:text="${users.value.getUserid()}"></span>
    <span th:text="${users.value.getUsername()}"></span>
</div>
</body>
</html>
复制代码

 

eachlist
复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>eachlist</title>
</head>
<body>
<!--
    第一个参数user,是循环的名字(随意就行)
    第二个参数userState,当前循环对旬状态的变量(可选,默认就是对象变量名+Stat)
    第三个参数${userlist}是当前循环对象集合
-->
<div th:each="user,userStat:${userlist}">
    <span th:text="${userStat.count}"></span>
    <span th:text="${user.getUserid()}"></span>
    <span th:text="${user.getUsername()}"></span>
</div>
<!--没有写userStat,也可以使用userStat这个变量-->
<br/><br/>
<div th:each="user:${userlist}">
    <span th:text="${userStat.count}"></span>
    <span th:text="${user.getUserid()}"></span>
    <span th:text="${user.getUsername()}"></span>
</div>
<!--后台的值,用model添加,就能在前台的任何需要的地方取出来-->
<h1 th:text="${data}">xxxx</h1>
</body>
</html>
复制代码

 

eacharray
复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>eacharray</title>
</head>
<body>
<!--如果传过来的是数组,最好把数组填满,不然可能会报错.-->
<div th:each="user,userStat:${userArray}">
    <span th:text="${userStat.count}"></span>
    <span th:text="${user.userid}"></span>
    <span th:text="${user.getUsername()}"></span>
</div>
</body>
</html>
复制代码

 

eachall
复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>eachall</title>
</head>
<body>
<h2>循环遍历复杂集合:list->map->list->user</h2>
<!--这里是把最外层的list打开,然后可以取出map对象-->
<div th:each="myListMap:${mylist}">
    <!--这里是打开map,取出里面的list对象-->
    <div th:each="myListMapObj:${myListMap}">
        <!--这一行,是取出map对象myListMapObj里的key,他的value对象是一个list,还要再循环-->
        Map集合的key:<span th:text="${myListMapObj.key}"></span>
        <!--到这里,就取出了最后一层list里的对象了,这时里面就是User对象了,这里取出的是Map对象的value-->
        <div th:each="myListMapList:${myListMapObj.value}">
            <span th:text="${myListMapList.getUserid()}"></span>
            <span th:text="${myListMapList.getUsername()}"></span>
        </div>
    </div>
</div>
</body>
</html>
复制代码