Java thymeleaf utext/th:utext自己插入一个新行,为什么?

Java thymeleaf utext/th:utext自己插入一个新行,为什么?,java,html,thymeleaf,newline,Java,Html,Thymeleaf,Newline,在th:utext中使用简单的html标记似乎导致出现错误的换行符。为什么会这样,和/或我如何预防 我的标记如下所示: <div class="row mb-1" th:utext="${item.snippet}"></div> snippet = StringUtils.replaceIgnoreCase(snippet, searchText.trim(), "<strong>"+sear

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

我的标记如下所示:

<div class="row mb-1" th:utext="${item.snippet}"></div>
snippet = StringUtils.replaceIgnoreCase(snippet, 
searchText.trim(), 
"<strong>"+searchText.trim().toUpperCase()+"</strong>");
The quick brown fox
<strong>JUMPED</strong>
over the lazy dogs
The quick brown fox JUMPED over the lazy dogs
当我移除
strong
标记时,html呈现如下:

<div class="row mb-1" th:utext="${item.snippet}"></div>
snippet = StringUtils.replaceIgnoreCase(snippet, 
searchText.trim(), 
"<strong>"+searchText.trim().toUpperCase()+"</strong>");
The quick brown fox
<strong>JUMPED</strong>
over the lazy dogs
The quick brown fox JUMPED over the lazy dogs
值得注意的是,我所说的不仅仅是它在浏览器中的显示方式;源代码实际上在
后面显示了一个换行符;当
不存在时,也没有换行符。我已经确认它也没有添加到Java层。

尝试使用“内联表达式”:

[(${item.snippet}]
记录在案

至于原因,我有一个类似的模板,并注意到了Thymeleaf3.0发布后的行为变化。在描述内联表达式时,将等效表达式描述为:



该行为表明对某些或所有标记有额外的文本处理,
必须隔离目标文本。

我尝试了这两个示例,并呈现了相同的错误换行符。很奇怪,我同意。顺便说一句,您在Java代码中调用了
.toUpperCase()
,但HTML代码片段没有显示大写字母——您知道那里发生了什么吗?似乎缺少一些相关的上下文。“item”只是一个POJO吗?它是用大写字母表示的;我在清理代码片段以便上传时忽略了这一点。item是列表中的一个pojo,每个pojo都有一个th:用于对其进行迭代?这根本不是一个问题;这是一个骗局: