提问者:小点点

如何自动转义胸腺病变量中的特殊字符?


我正在将一个字符串路径变量从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

共1个答案

匿名用户

Thymeleaf将自动URL编码查询参数(后面的内容?)。

但是这里你想URL编码一个URL路径段-所以你需要显式处理:

th:href="@{/displayComments/{comments}(comments=${#uris.escapePathSegment(excerpt.comments, 'UTF-8')})}" 

我建议使用接受编码参数的函数版本,这样您就可以显式使用UTF-8并避免被意外的默认编码绊倒。