深色模式
禁用内联(Disabling inlining)
虽然表达式内联默认是激活的,但在某些场景下,你需要输出 [[...]] 或 [(...)] 这些字符本身(而非解析为表达式),此时可以通过 th:inline="none" 禁用指定区域的内联解析机制。
html
<!-- 禁用内联,[[1,2,3], [4,5]] 仅作为普通文本显示 -->
<p th:inline="none">A double array looks like this: [[1, 2, 3], [4, 5]]!</p>最终渲染结果(保留 [[...]] 字符,无解析):
html
<p>A double array looks like this: [[1, 2, 3], [4, 5]]!</p>如果不添加 th:inline="none",Thymeleaf 会尝试将 [[1, 2, 3], [4, 5]] 解析为表达式,最终因表达式不合法导致渲染错误或异常。
关键规则
作用域:
th:inline="none"的禁用效果仅作用于当前标签及其所有子标签,不会影响其他标签:html<!-- 该 p 标签内禁用内联 --> <p th:inline="none">[[1,2]] 是普通文本</p> <!-- 该 span 标签内仍启用内联,会解析表达式 --> <span>[[${user.name}]]</span>其他内联模式(补充):
th:inline除了none,还有两个常用值(虽未在当前示例中提及,但需了解):text:显式激活文本内联(默认状态,无需手动设置);javascript/css:激活 JS/CSS 内联(后续会接触)。
禁用的必要性: 当文本中包含
[[/]]/[(]/)]这些内联标识字符,且这些字符是业务需要展示的内容(如代码示例、数学公式、数组格式说明)时,必须禁用内联,否则会被 Thymeleaf 误解析为表达式,导致:- 表达式语法错误(如上述数组示例);
- 非预期的渲染结果(如把
[[user]]解析为变量${user})。
典型使用场景
- 展示代码片段:如文档页面中展示 JSON/数组格式、Thymeleaf 语法示例;
- 数学/公式表达:如
[[a+b]]作为数学公式展示,而非表达式; - 业务文本包含特殊字符:如产品描述、用户输入内容中包含
[[...]]字符。
总结
th:inline="none"用于禁用指定标签内的表达式内联解析,让[[...]]/[(...)]作为普通文本输出;- 作用域为当前标签及其子标签,不会影响其他区域的内联功能;
- 核心适用场景:文本中包含内联标识字符,且需要原样展示这些字符时。
