Thymeleaf 文本文字中的下划线

2024-05-03

问题:如何转义文本中的多个连续下划线?

我正在使用 HTML 的标准 Thymeleaf 方言(我是not此处使用 Spring 或 SpEL)。

在 Thymeleaf 中,我可以创建一个下划线作为文字文字 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf#text-literals如下:

<div th:text="'_'"></div>

这呈现为:

<div>_</div>

我可以用同样的方式创建带有 2 个和 3 个下划线的文字:

<div th:text="'__'"></div>
<div th:text="'___'"></div>

但是对于 4 个下划线,我收到错误:

org.thymeleaf.exceptions.TemplateProcessingException:无法解析为表达式:“”

我假设 (也许不正确) 这是因为两对下划线 (__其次是__) 是 Thymeleaf 使用的标记表达式预处理器 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf#preprocessing。当这些被删除时,我留下一个空的表达式 - 因此出现错误。

我可以使用反斜杠转义下划线(\) 转义字符。以下全部给出了所需的结果:

<div th:text="'\_\___'"></div>
<div th:text="'\_\_\_\__'"></div>
<div th:text="'\_\_\_\___'"></div>
<div th:text="'_\_\_\_\___'"></div>
<div th:text="'\_\_\_\_\_\___'"></div>

但我不能只是逃避every下划线。

这会显示一个杂散的反斜杠:

<div th:text="'\_\_\_\_\_'"></div>

结果是:

<div>____\_</div>

So:

  1. 文本文字中转义下划线的规则是什么?

  2. 真的是预处理器导致了这种行为吗(内部文本文字) - 或者是别的什么?


是的,这绝对是预处理器的一部分。

在我看来 https://github.com/thymeleaf/thymeleaf/blob/bb2fd0e9005f8aab0de0a3f9f3897edea8084b88/src/main/java/org/thymeleaf/standard/expression/StandardExpressionPreprocessor.java#L113就像预处理器只替换完全匹配的\_\_ with __。在任何情况下,如果你有奇数个\_的,你会得到输出\_——因为它不治疗\_作为真正的逃避而只是寻找\_\_.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thymeleaf 文本文字中的下划线 的相关文章

随机推荐