Java Thymeleaf th:href参数中的条件

Java Thymeleaf th:href参数中的条件,java,spring,thymeleaf,Java,Spring,Thymeleaf,我的ThymileAF模板中有一个元素,它有一个如下链接: th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}" 根据当前的实现,参数1…10可以包含我不想包含在href中的值。例如,如果它是id,那么它可以是-1,这意味着没有选择id,因此必须省略此参数以避免url字符串发出咔哒声,而不是 /search/type?参数1=-1 洗干净 /search/t

我的ThymileAF模板中有一个元素,它有一个如下链接:

th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}"
根据当前的实现,
参数1…10
可以包含我不想包含在
href
中的值。例如,如果它是id,那么它可以是-1,这意味着没有选择id,因此必须省略此参数以避免url字符串发出咔哒声,而不是

/search/type?参数1=-1

洗干净

/search/type

如何做到这一点? 我试过这个:

th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
但此表达式会导致异常:

org.thymeleaf.exceptions.TemplateProcessingException:无法分析 作为表达:

我试过这个:

th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
但结果仍然不可接受:

/search/type?参数1=


那么,从url中删除不需要的参数的正确方法是什么呢?

看起来我做了更多的研究并找到了一种方法。 关键词是:预处理。 因此,出于我的目的,以下表达式起作用:

th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"

简短说明:用双下划线
uuuuu(${parameter1}='-1'?','parameter1=${parameter1})uuuuuuu
环绕表达式,然后仅当其计算结果为非空字符串时才会添加环绕表达式。在url参数
'的情况下,'
计算为两个空参数且未添加。

以下是指向文档的链接:(链接论坛中的一个已过时)