Skip to content

映射工具(Maps)

#maps 是 Thymeleaf 专为 java.util.Map 设计的工具对象,提供空值安全的大小计算、判空、键/值包含判断等核心操作(底层对应 org.thymeleaf.expression.Maps 类,可参考其 JavaDoc 获取完整 API)。

java
/*
 * ======================================================================
 * 请查阅 org.thymeleaf.expression.Maps 类的 Javadoc API 文档
 * ======================================================================
 */

/*
 * 计算 Map 的大小(即键值对数量)
 */
${#maps.size(map)}

/*
 * 检查 Map 是否为空(无任何键值对)
 */
${#maps.isEmpty(map)}

/*
 * 检查 Map 中是否包含指定的键/多个键,或指定的值/多个值
 */
${#maps.containsKey(map, key)}
${#maps.containsAllKeys(map, keys)}
${#maps.containsValue(map, value)}
${#maps.containsAllValues(map, value)}

补充说明(贴合 Thymeleaf 集合操作技术语境)

1. 核心术语解析

英文术语译法/说明
MapsMap 工具类(Thymeleaf 表达式工具,#maps 是其在模板中的简写,专用于操作 Java Map 集合)
size大小(返回 Map 中键值对的数量,对应 Java 中 Map.size() 方法)
isEmpty是否为空(返回布尔值,Map 无键值对时为 true,对应 Java 中 Map.isEmpty() 方法)
containsKey/containsAllKeys包含指定键/包含所有指定键(keys 为集合/数组类型,需所有键都存在才返回 true)
containsValue/containsAllValues包含指定值/包含所有指定值(value 为单个值,values 为集合/数组类型)

2. 关键逻辑解读(实战示例)

假设有一个用户信息 Map userMap = {"name":"张三", "age":25, "gender":"男"},核心用法如下:

html
<!-- 1. 获取 Map 大小 -->
<div>Map 键值对数量:<span th:text="${#maps.size(userMap)}"></span></div> <!-- 输出 3 -->

<!-- 2. 检查 Map 是否为空 -->
<div th:if="${#maps.isEmpty(userMap)}">Map 为空</div> <!-- 不显示,因 userMap 非空 -->

<!-- 3. 检查是否包含指定键 -->
<div th:if="${#maps.containsKey(userMap, 'age')}">包含 age 键</div> <!-- 显示 -->

<!-- 4. 检查是否包含所有指定键(keys 为 List/数组) -->
<div th:with="keys=${{'name', 'age'}}" 
     th:if="${#maps.containsAllKeys(userMap, keys)}">包含 name 和 age 键</div> <!-- 显示 -->

<!-- 5. 检查是否包含指定值 -->
<div th:if="${#maps.containsValue(userMap, '张三')}">包含 张三 这个值</div> <!-- 显示 -->
  • 核心注意:containsAllKeys/containsAllValues 的第二个参数需为集合/数组类型(如 List、数组),而非单个值;若传入单个值会触发运行时异常。

3. 句式优化说明

  • 补充括号注释(如“即键值对数量”“无任何键值对”),明确 size/isEmpty 的实际含义,避免新手误解;
  • 将原文“Check if key/s or value/s are contained in maps”拆分为更易懂的“检查 Map 中是否包含指定的键/多个键,或指定的值/多个值”,用“/”区分“单个/多个”,贴合方法名(containsKey vs containsAllKeys)的差异;
  • 保留 ${#maps.xxx} 表达式原样,符合 Thymeleaf 模板语法规范,注释简洁且直击核心功能。

总结

  1. #maps 核心作用:在 Thymeleaf 模板中便捷操作 Java Map 集合,无需在后端处理 Map 基础判断;
  2. 核心用法分类:
    • 基础属性:size(map)(获取键值对数量)、isEmpty(map)(判断是否为空);
    • 存在性检查:containsKey(单键)/containsAllKeys(多键)、containsValue(单值)/containsAllValues(多值);
  3. 关键注意点:containsAllKeys/containsAllValues 的第二个参数必须是集合/数组类型,否则会报错。