Skip to content

4.6 字面量

文本字面量

文本字面量是用单引号包裹的字符串,可包含任意字符;若字符串内部需要使用单引号,需通过 \' 进行转义。

html
<p>
  Now you are looking at a <span th:text="'working web application'">template file</span>.
</p>

这段代码中,th:text="'working web application'" 会将 <span> 标签内的默认文本 template file 替换为 working web application

核心规则解释
  1. 单引号包裹: Thymeleaf 中,文本字面量必须用单引号 ' 包裹(而非双引号),这是区分“文本值”和“表达式”的关键——如果省略单引号,Thymeleaf 会将其解析为变量表达式(比如 th:text="working web application" 会尝试查找名为 working 的变量,导致错误)。

  2. 单引号转义: 若文本本身包含单引号(如 It's a test),需用 \' 转义内部单引号,否则会导致语法错误:

    html
    <span th:text="'It\'s a working web application'">template file</span>

    渲染后结果为:It's a working web application

  3. 与变量表达式结合: 文本字面量可通过 + 与变量表达式拼接,实现动态文本生成:

    html
    <!-- 拼接文本和变量:Hello + 用户名 -->
    <span th:text="'Hello ' + ${user.name}">Hello Guest</span>
常见错误提醒
  • ❌ 错误写法:th:text="working web application"(无单引号,Thymeleaf 会解析为变量,导致找不到 working 变量);
  • ❌ 错误写法:th:text="'It's a test'"(内部单引号未转义,语法中断);
  • ✅ 正确写法:th:text="'It\'s a test'"(转义内部单引号)。

总结

  1. 文本字面量是 Thymeleaf 中表示固定字符串的方式,必须用单引号 ' 包裹;
  2. 字符串内的单引号需用 \' 转义,避免语法错误;
  3. 可通过 + 与变量表达式拼接,实现静态文本+动态变量的组合渲染。