我使用Thymeleaf作为前端。
我有一些自然语言的菜单类别,我在网页上显示并传递给服务器。
例如,我有一类"我最喜欢的猫"
该类别位于变量 $ {category.key}
中此类别有链接;
<a th:href="|http://myserver?selectedCategory=${category.key}|><span th:text=${category.key}></span></a>
&#13;
我不想要两个变量,一个是编码的,一个是未编码的。
作为Thymeleaf HTML编译过程的一部分,我如何编码或取消编码$ {category.key}?
答案 0 :(得分:2)
如果使用url语法(which was supplied in a comment above)构建字符串,那么Thymeleaf将对url进行编码。对于您的示例网址,它应如下所示 - 使用@
符号而不是$
:
<a th:href="@{http://myserver(selectedCategory=${category.key})}" th:text="${category.key}" />
(另外,你不需要额外的跨度。)
答案 1 :(得分:2)
@symbol是Thymeleaf中的服务器上下文路径。你使用@symbol。
<a href="#" th:href="@{/your server context path?selectedCategory=__${category.key}__}">
<span th:text="${category.key}"> </span></a>
答案 2 :(得分:0)
使用@symbol绝对是主要选择。但只是要注意可能在某些场合使用的另一种选择:
答案是使用鲜为人知的#strings函数来替换&#39; +&#39;用&#39; &#39;
在链接文字中,使用
th:text="${#strings.replace(category.key,'+',' ')}"