Java Thymeleaf

官网文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#using-theach


Thymeleaf 遍历对象都使用 th:each。

可以遍历的对象:

    任何实现 java.util.Iterable 接口的对象;

    任何实现 java.util.Enumeration 接口的对象;

    任何实现 java.util.Iterator 接口的对象,其值将在迭代器返回时使用,而无需缓存内存中的所有值(这句话暂时不知道什么意思);

    任何实现 java.util.Map 接口的对象,遍历时,应用对象的类型是java.util.Map.Entry;

    任何数组;

    任何其他对象,遍历时会将此对象作为当前集合的唯一值,即长度等于1的集合;


格式:

th:each="obj:${item}"
th:each="obj,stat:${item}"

stat,遍历信息,属性:

    index: 当前索引,从0开始

    count: 当前索引,从1开始

    size: 当前所遍历集合的长度

    current: 当前遍历对象,等同于obj

    even: 是否是偶数(true|false)

    odd:是否是奇数(true|false)

    first: 是否是第一个(true|false)

    last: 是否是最后一个(true|false)


代码举例

Java代码:

@RequestMapping("/to")
public ModelAndView to () {
    User user1 = new User();
    user1.setId(11L);
    user1.setName("姓名11");
    user1.setAge(11);
    
    User user2 = new User();
    user2.setId(12L);
    user2.setName("姓名12");
    user2.setAge(12);
    
    User user3 = new User();
    user3.setId(13L);
    user3.setName("姓名13");
    user3.setAge(13);
    
    List<User> list = new ArrayList<User>();
    list.add(user1);
    list.add(user2);
    list.add(user3);
    
    
    Map<String, User> map = new HashMap<String, User>();
    map.put("user1", user1);
    map.put("user2", user2);
    map.put("user-3", user2);
    
    ModelAndView m = new ModelAndView("to");
    return m.addObject("str", "hello world!").addObject("list", list).addObject("map", map);
}

Thymeleaf代码:

<body>
    遍历单一值:
    <ul>
        <li th:each="s,stat:${str}" th:text="${s}"></li>
    </ul>
    
    <div th:if="${#lists.isEmpty(list)}">
        list 列表是空的!
    </div>
    <div th:unless="${#lists.isEmpty(list)}" >
        <span th:text="'list 列表长度是:' + ${#lists.size(list)}"></span>
        <ul>
            <li th:each="user,userStat : ${list}" 
                th:text="'序号:' + ${userStat.count} 
                    + ' - 第一个?: ' + ${userStat.first} 
                    + ' - 最后一个?: ' + ${userStat.last} 
                    + ' - 偶数行: ' + ${userStat.even} 
                    + ' - 奇数行: ' + ${userStat.odd} 
                    + ' - ID: ' + ${user.id} 
                    + ' - name: ' + ${user.name}
                    + ' - age: ' + ${user.age}"></li>
        </ul>
    </div>
    
    
    <div th:if="${#maps.isEmpty(map)}">
        map集合是空的!
    </div>
    <div th:unless="${#maps.isEmpty(map)}" >
        <span th:text="'map集合长度是:' + ${#maps.size(map)}"></span>
        <ul>
            <li th:each="keyAndValue,userStat : ${map}" 
                th:text="'序号:' + ${userStat.count} 
                    + ' - key: ' + ${keyAndValue.key}
                    + ' - ID: ' + ${keyAndValue.value.id} 
                    + ' - name: ' + ${map.get(userStat.current.key).name}
                    + ' - age: ' + ${userStat.current.value.age}" ></li>
        </ul>
        
        <span>获取 key = user1 信息</span>
        name: <span th:text="${map.get('user1').name}"></span>
        age: <span th:text="${map['user1'].age}"></span>
    </div>
</body>

结果:

遍历单一值:

  • hello world!
list 列表长度是:3
  • 序号:1 - 第一个?: true - 最后一个?: false - 偶数行: false - 奇数行: true - ID: 11 - name: 姓名11 - age: 11
  • 序号:2 - 第一个?: false - 最后一个?: false - 偶数行: true - 奇数行: false - ID: 12 - name: 姓名12 - age: 12
  • 序号:3 - 第一个?: false - 最后一个?: true - 偶数行: false - 奇数行: true - ID: 13 - name: 姓名13 - age: 13
map集合长度是:3
  • 序号:1 - key: user1 - ID: 11 - name: 姓名11 - age: 11
  • 序号:2 - key: user2 - ID: 12 - name: 姓名12 - age: 12
  • 序号:3 - key: user-3 - ID: 12 - name: 姓名12 - age: 12
获取 key = user1 信息 name: 姓名11 age: 11




转载请指明出处!http://www.miselehe.com/article/view/4