You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thymeleaf传递含空格文本报错,无空格文本正常问题求助

问题描述

传递无空格文本(如tech)时系统运行正常,但传递含空格文本(如tech life)时,Thymeleaf出现解析错误。

相关代码片段

<span th:if="${toTimestamp == null && fromTimestamp == null}">
   <a class="btn btn-link" th:with="search=${search}"
            th:href="@{/feed(page=1, sortDirection=${sortDirection == 'asc' ? 'desc' : 'asc'}, author=${checkedAuthors}, tag=${checkedTags},
     __(${#strings.isEmpty(search)} ? '' : ('search=' + ${search}))__)}">
 Sort by Published Date</a>
</span>

报错信息

Caused by: org.attoparser.ParseException: Could not parse as expression: "@{/feed(page=1, sortDirection=${sortDirection == 'asc' ? 'desc' : 'asc'}, author=${checkedAuthors}, tag=${checkedTags},
                       __(${#strings.isEmpty(search)} ? '' : ('search=' + ${search}))__)}" (template: "blog/feed" - line 141, col 16)
    at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
    at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
    ... 48 more

解决方案

问题根源在于手动拼接URL参数的方式:当search包含空格时,拼接的字符串会破坏Thymeleaf URL表达式的语法,且无法自动处理URL编码。

正确的做法是直接将search作为参数加入URL表达式的参数列表,Thymeleaf会自动处理参数的存在性(空值时不会添加该参数)和URL编码:

<span th:if="${toTimestamp == null && fromTimestamp == null}">
   <a class="btn btn-link"
            th:href="@{/feed(page=1, sortDirection=${sortDirection == 'asc' ? 'desc' : 'asc'}, author=${checkedAuthors}, tag=${checkedTags}, search=${search})}">
 Sort by Published Date</a>
</span>

如果需要严格判断search不为空才添加参数,也可以用条件表达式:

<span th:if="${toTimestamp == null && fromTimestamp == null}">
   <a class="btn btn-link"
            th:href="@{/feed(page=1, sortDirection=${sortDirection == 'asc' ? 'desc' : 'asc'}, author=${checkedAuthors}, tag=${checkedTags}, search=${!#strings.isEmpty(search)} ? ${search} : null)}">
 Sort by Published Date</a>
</span>

原理:Thymeleaf的@{...}表达式会自动对参数值进行URL编码(包括将空格转义为%20),同时如果参数值为null或空字符串,会自动忽略该参数,完全无需手动拼接字符串。

内容的提问来源于stack exchange,提问作者KOTIPALLI V KRISHNA LAKSHMI NA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:28:39