thymelaf utext/th:utext正在自己插入一行换行符,为什么



th:utext中使用简单的html标记似乎会导致出现错误的换行符。为什么会这样,和/或我该如何预防?

我的标记如下:

<div class="row mb-1" th:utext="${item.snippet}"></div>

我的Java是这样的:

snippet = StringUtils.replaceIgnoreCase(snippet, 
searchText.trim(), 
"<strong>"+searchText.trim().toUpperCase()+"</strong>");

当CCD_ 2为"0"时;那只敏捷的棕色狐狸跳过了懒狗;;CCD_ 3是";跳跃";;并且存在CCD_ 4标签;html的呈现方式如下:

The quick brown fox
<strong>JUMPED</strong>
over the lazy dogs

当我删除strong标签时,html的呈现方式如下:

The quick brown fox JUMPED over the lazy dogs

值得注意的是,我谈论的不仅仅是它在浏览器中的显示方式;源实际上在CCD_ 6之后显示了一条换行符;并且当CCD_ 7不存在时没有换行符。我已经确认它不会被添加到Java层中。

尝试使用;内联表达式:";

<div class="row mb-1">[(${item.snippet})]</div>

此处记录。

至于为什么,我有一个类似的模板,并注意到Thymelaf 3.0发布后的行为变化。在描述内联表达式时,该问题将等效表达式描述为:

<div class="row mb-1"><th:block th:utext="${item.snippet}"/></div>

该行为表明对某些或所有标记都有额外的文本处理,并且<th:block th:utext"..."/>必须隔离目标文本。

最新更新