所以我的 Thymeleaf 模板中有一个元素,它有一个看起来像这样的链接:
th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}"
根据当前的实现,parameter1...10
可以具有我不想包含在 href
中的值。例如,如果它是 id,它可以是 -1,这意味着没有选择 id,所以这个参数必须被省略以避免 url 字符串困惑,所以而不是
/search/type?parameter1=-1
干干净净
/搜索/类型
如何实现? 我试过这个:
th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
但是这个表达式会导致异常:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:
我试过这个:
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
但是结果还是不行:
/search/type?parameter1=
那么从 url 中消除不需要的参数的正确方法是什么?
最佳答案
看来我做了更多研究并找到了方法。 关键词是:预处理。 This is the link. 因此,出于我的目的,以下表达式有效:
th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"
简短说明:用双下划线包围表达式__(${parameter1}=='-1'?','parameter1=${parameter1})__
,然后包围的表达式将只有在计算结果为非空字符串时才添加。在 url 参数的情况下,','
计算为两个空参数且未添加。
关于java - Thymeleaf 中的条件 th :href parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174524/