我正在将一个字符串路径变量从thymeleaf href模板发送到Spring-boot控制器,但是如果这个字符串中包含一个URL,它的斜杠字符"//"将被解释为hrefURL的一部分。有没有办法让这些符号自动转义?
胸腺
<a th:href="@{/displayComments/{comments}(comments=${excerpt.comments})}">Comments</a>
那里
comments=${excerpt.comments} = 'https://www.youtube.com/watch%3Fv=j1wgaFJ0750'
并且URL用报告有一个意外的错误(类型=未找到,状态=404)
http://localhost:8080/displayComments/https://www.youtube.com/watch%3Fv=j1wgaFJ0750
Thymeleaf将自动URL编码查询参数(后面的内容?
)。
但是这里你想URL编码一个URL路径段-所以你需要显式处理:
th:href="@{/displayComments/{comments}(comments=${#uris.escapePathSegment(excerpt.comments, 'UTF-8')})}"
我建议使用接受编码参数的函数版本,这样您就可以显式使用UTF-8
并避免被意外的默认编码绊倒。