Thymeleaf模板中如何将↵字符转换为HTML换行显示?
解决方案
为什么当前方式不生效
HTML本身会忽略普通文本里的换行符,Thymeleaf的th:text会转义特殊字符,th:utext虽然不转义,但换行符在普通HTML元素里依然不会被解析成换行,所以才会显示成单行且↵消失。
两种可行方案
1. 前端Thymeleaf直接处理(无需修改后端)
- 替换成HTML换行标签:用Thymeleaf的字符串工具类把文本里的↵(如果后端传的是实际换行符,比如
\n或\r\n就替换对应的字符)替换成<br>,再用th:utext渲染,浏览器会解析<br>为换行:
<li th:utext="${#strings.replace(myVar, '↵', '<br>')}"></li>
- 使用
<pre>标签保留格式:<pre>标签会原样保留文本的换行、空格等格式,直接用th:text渲染即可,可加样式消除默认格式:
<pre style="white-space: pre-wrap; border: none; padding: 0; margin: 0;"> <li th:text="${myVar}"></li> </pre>
2. 后端预处理后传模板
如果多个页面都需要展示这类带换行的文本,后端统一处理更高效:
- 后端将文本中的↵(或实际换行符)替换为
<br>,比如Java代码示例:
String processedText = originalText.replace("↵", "<br>"); // 将processedText传入Thymeleaf模板
- 模板里用
th:utext渲染处理后的文本:
<li th:utext="${processedText}"></li>
方案选择
- 仅单个页面需要:选前端处理更快捷
- 多处需要统一格式:选后端预处理更省心
内容的提问来源于stack exchange,提问作者John P
相关产品推荐
相关产品推荐

